git入門簡介
git基礎概念
git是目前最好的版本控制系統(沒有之一)git
branch
git裏面核心的內容是分支(branch),不一樣於svn的是,分支的成本很低,只記錄變化的文件。git官方是很是推薦是使用分支來開發,咱們在本身本地進行某些特性開發的時候,也是能夠開闢一個本地分支。操做方式分爲兩種服務器
- 本身本地建一個分支,可選擇方式有兩種,本地寫好後本身merge到develop分支,刪除本地分支。----我的建議採用這種方式
- 若是是業務特性,例如feature分支,可能對現有在develop上開發的其餘工程師形成影響,且有兩我的以上開發這個feature分支。或者須要爲某些特性單獨作一些特別的處理。這就須要推送到遠程分支上面去。 ----我的建議若是一我的開發的話,開新的本地分支是有效的操做方式 操做命令以下
- git branch (name)
- git checkout (name)
- git checkout -b (name) 是上面兩個命令的合集
- git merge <name> git有個概念是當前分支,若是用命令行的話能夠清晰的看到,這個merge的意思是在將<name>分支合併到當前分支上
- git push origin (name) 推送到遠程分支
- git branch -d (name) 刪除本地分支 git中一個遠程分支對應一個本地分支,名字能夠不同,不過建議最好保持一致。
- git push origin :(name) 冒號前面是空的表明將一個空推送到遠程分支,便是刪除遠程分支
- git push origin --delete (name) git1.7 以上支持這個方式 建議刪除時不要填寫master,develop等比較關鍵的分支
commit
git第二個概念是commit,提交記錄,每次提交都會產生一個sha1-hash值,Git倉庫中內容和頭信息(Header)的一個校驗和(checksum)。 主要使用來保證每次提交的完整性。ssh
git log
svn
能夠看到每一個commit後都有一個加密的串。這個串能夠作一些回滾或者checkout的操做。---下面的這些操做建議少使用。工具
- git reset --soft (id) 撤銷當前的提交,會保持當前的提交和之間的跨度提交,將代碼回退到id對應的版本。
- git reset --hard (id) 撤銷當前的提交,將代碼硬回退到id對應的版本。
- git reset . 撤銷當前本地的全部提交和修改。回退到你拉代碼時的版本。能夠從新get代碼
- git reset –soft HEAD 回退一個版本
- git reset –soft HEAD~3 向前回退三個版本
- git reset –hard origin/master 回退到服務器最新
有時候可能須要撤銷當前的修改,作其餘的任務的時候,操做方式分爲三種。開發工具
-
直接提交當前的提交加密
-
暫存當前的提交url
- git stash 暫存起來
- git stash pop 拿出暫存區的內容
![在這裏輸入圖片標題 stash](http://static.javashuo.com/static/loading.gif)
- git stash list 查看暫存區列表
-
直接提交拋棄到這次的修改命令行
- git checkout . 也能夠撤銷某個文件的修改 .替換成修改的文件,須要帶上路徑
stage(暫存區)
![在這裏輸入圖片標題 data](http://static.javashuo.com/static/loading.gif)
操做步驟以下:版本控制
- git add . 增長索引 提交到暫存區
- git commit -m 'message'提交到本地倉庫
- git push origin (BranchName) 提交到遠程倉庫
- git commit -a -m 'message'
上面三個步驟是將本地代碼提交到遠程服務器的基本操做。
git flow
git工做流程是以分支爲基礎的操做流程 ![在這裏輸入圖片標題 flow](http://static.javashuo.com/static/loading.gif)
能夠看下項目裏面如今的分支規則
這個地方須要發佈代碼的遵循這個規則。如今基本是有(徐蕾)負責。
工做中git的使用
我通常遇到的問題和操做方式,感興趣的也能夠本身習慣一套本身的命令方式,不反對使用sourceTree和git tortoise等工具提交源碼,原則是保證代碼合併的時候不出問題。
- 創建倉庫,推送代碼,建議使用ssh的方式,如今git支持http和ssh兩種方式。
- git init
- git add .
- git commit -m 'message'
- git remote add origin (git url)
- git push origin master
- git checkout -b develop
- git push origin develop
- git remote set-url origin (git url)
- 拉取代碼,提交,推送代碼
- git status
- git add .
- git commit -m 'message'
- git pull --rebase
- git push origin ()
- 遇到衝突的時候
- 先解決掉本地的衝突,建議使用開發工具解決
- git rebase --continue | git merge -m 'message'
- git add .
- git push origin ()
- stash(隱藏起來) 當你須要臨時修改其餘的bug,可是如今已經的修改又不能提交時,建議採用這個方式
- git stash
- git stash pop
- git stash list
- 建議多使用git的本地分支去輔助代碼開發
- 建議每次提交時以一個單元去使用,意思就是一個獨立的單元生成一個提交,在繼續後面的開發。一次推送能夠推送多個單元的提交
- 未完待續