由於已經對git使用比較熟悉了,此篇關於git分支和版本的的管理將不會詳細記錄每乙個細節。如果你還不熟悉git,請先參看:
[1]
[2]
[3]
建立分支,你可以使用
git branch dev
這就建立了乙個dev(development之意),更好的,選擇使用下面的方法建立兩個分支——dev,建立後會自動切換到新建立的分支,
git checkout -b dev
要切回master分支怎麼辦?使用
git checkout master
當然你也可以使用
git checkout dev
再次切換到dev分支。
好了,現在有兩個分支:master和dev了。比如切來切去,突然暫停手下的活要先擼一把,擼完回過頭不知道現在在哪個分支了,怎麼辦?
搞定,git branch可以檢視當前已有的分支資訊,並在將當前所在分支高亮,當前分支前還有個*號。
某天要除錯某個新演算法,又不能保證能調好,又怕打亂了原有的程式,怎麼辦?建乙個新分支:
git checkout -b debug
在debug分支中慢慢玩,master分支和dev分支毫不受影響。這時就有兩種情況:
git branch -d debug
這時如果你很幸運,直接合併成功。悲傷的事情總是時有發生,「合併發生衝突」是常有的事,因此一旦出現類似下面的提示git checkout master // 切換到master
git merge debug // 合併debug到master
就得自己動手解決衝突了,git會用conflict (content): merge conflict in
...automatic merge failed; fix conflicts and then commit the result.
這樣的格式提醒你,只要修改保留實際需要的內容後即可解決衝突,解決衝突後就可以執行git commit。<<<<<
*****==
debug分支中衝突的內容
>>>>>>>debug
好了,我們合併了master和debug,做it的人總會偷個腥,想看看git是怎麼記錄合併的,沒問題,
就可以直接看到分支合併的過程。我這有個大點的工程合併效果的例子,git
log-
-graph--
pretty=oneline--
abbrev
-commit
最後,反正debug我玩完了,刪除debug分支
git branch -d debug
我們所有的開發工作都在dev上進行,一旦有了大的突破,則合併到master。
如果不在dev,切換到dev,
還記得我們之前推送master分支到遠端origin嗎?git branch
git checkout dev
git push -u origin master
推送dev也是一樣的,只要指定分支名為dev就可以了,
git push -u origin dev
git clone git@github.com:....
這是,你用git branch看看,這只是clone了master分支,dev呢?這可是費勁苦心,要在同學a的dev分支上開發,就必須建立遠端的dev分支到本地
git checkout -b dev origin/dev
再用git branch看看?有了吧。
git checkout dev
git pull origin dev
git pull origin dev
可能出現衝突,解決後才能進行下一次的提交。
極少的場合,要不就是老闆的老婆月經亂了,要不就是。。。哎,不說了,非要刪除遠端dev分支,也是有辦法的,
git push oringin :dev
哇,第乙個里程碑式的突破,有木有,這時你可小小的慶幸一下,打個標籤(tag),表示這是個可靠的可發布版本,
當然,注釋別向上面一樣(」第乙個里程碑的突破」)寫得那麼沒有營養。起個好名字很重要。預設的標籤將打在最新的commit上。git tag
-a v1.0
-m"第乙個里程碑的突破"
檢視打了哪些標籤使用
git tag
檢視某個標籤的資訊用
好了,好馬也有失前蹄的時候,標籤打錯也是正常的,git show v1.0
果斷刪了v1.0標籤。git tag
-d v1.0
我想要把v1.0推送到遠端,
git push origin v1.0
把所有的標籤一次推送到遠端更爽,
刪除遠端的標籤,你可以到github上刪除,也可以,git
push
origin
--br#
git tag
-d v1.0
git push origin :refs/tags/v1.0
git reset 是指將當前head的內容重置,不會留log資訊。
git reset head filename 從暫存區中移除檔案
git
reset--
hard
head~3
會將最新的3次提交全部重置,就像沒有提交過一樣。
git reset --hard [commit雜湊值](38679ed709fd0a3767b79b93d0fba5bb8dd235f8)
回退到 38679ed709fd0a3767b79b93d0fba5bb8dd235f8 版本
·eg:
(1)回退到指定版本
git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96
(2) 把修改推到遠端伺服器
git push -f -u origin master
好了,告一段落了,接著就是使用git策馬奔騰吧!根據--soft --mixed --hard,會對working tree和index和head進行重置:
(1)git reset --mixed:此為預設方式,不帶任何引數的git reset,它回退到某個版本,只保留原始碼,回退commit和index資訊
(2)git reset --soft:回退到某個版本,只回退了commit的資訊,不會恢復到index file一級。如果還要提交,直接commit即可
(3)git reset --hard:徹底回退到某個版本,本地的原始碼也會變為上乙個版本的內容
[1] 廖雪峰git教程
Git的版本和分支管理
1 2 3 本地的分支管理 建立分支,你可以使用 git branch dev 這就建立了乙個dev development之意 更好的,選擇使用下面的方法建立兩個分支 dev,建立後會自動切換到新建立的分支,git checkout b dev 要切回master分支怎麼辦?使用 git chec...
Git的版本和分支管理
本地的分支管理 遠端的分支管理 本地tag管理 遠端tag管理 結尾及參考 由於已經對git使用比較熟悉了,此篇關於git分支和版本的的管理將不會詳細記錄每乙個細節。如果你還不熟悉git,請先參看 1 2 3 建立分支,你可以使用 git branch dev這就建立了乙個dev developme...
Git 分支管理和版本控制
git 分支管理 幾乎每一種版本控制系統都以某種形式支援分支。使用分支意味著你可以從開發主線上分離開來,然後在不影響主線的同時繼續工作。建立和切換分支命令git branch 後面不跟引數時,表示檢視當前所有的分支 git branch branchname 建立分支 git checkout br...