Git的版本和分支管理

2021-08-10 19:44:53 字數 4091 閱讀 6831

由於已經對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

這時如果你很幸運,直接合併成功。悲傷的事情總是時有發生,「合併發生衝突」是常有的事,因此一旦出現類似下面的提示

conflict (content): merge conflict in

...automatic merge failed; fix conflicts and then commit the result.

就得自己動手解決衝突了,git會用

<<<<<

*****==

debug分支中衝突的內容

>>>>>>>debug

這樣的格式提醒你,只要修改保留實際需要的內容後即可解決衝突,解決衝突後就可以執行git commit。

好了,我們合併了master和debug,做it的人總會偷個腥,想看看git是怎麼記錄合併的,沒問題,

git

log-

-graph--

pretty=oneline--

abbrev

-commit

就可以直接看到分支合併的過程。我這有個大點的工程合併效果的例子,

最後,反正debug我玩完了,刪除debug分支

git branch -d debug
我們所有的開發工作都在dev上進行,一旦有了大的突破,則合併到master。

如果不在dev,切換到dev,

git branch

git checkout dev

還記得我們之前推送master分支到遠端origin嗎?

git push -u origin master
推送dev也是一樣的,只要指定分支名為dev就可以了,

git push -u origin dev
git clone [email protected]:....
這是,你用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),表示這是個可靠的可發布版本,

git tag

-a v1.0

-m"第乙個里程碑的突破"

當然,注釋別向上面一樣(」第乙個里程碑的突破」)寫得那麼沒有營養。起個好名字很重要。預設的標籤將打在最新的commit上。

檢視打了哪些標籤使用

git tag
檢視某個標籤的資訊用

git show v1.0

好了,好馬也有失前蹄的時候,標籤打錯也是正常的,

git tag

-d v1.0

果斷刪了v1.0標籤。

我想要把v1.0推送到遠端,

git push origin v1.0
把所有的標籤一次推送到遠端更爽,

git

push

origin

--br#

刪除遠端的標籤,你可以到github上刪除,也可以,

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

根據--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:徹底回退到某個版本,本地的原始碼也會變為上乙個版本的內容

好了,告一段落了,接著就是使用git策馬奔騰吧!

[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...