Git 切換分支注意事項

前言

Git 下分支的應(yīng)用是很方便,同時也是相當(dāng)重要的一環(huán),但是在切換分支的過程中,如果不注意,就容易使分支之間相互影響,有可能搞亂自己的工作。

我也是碰到了這個問題,查看資料了之后,將其記錄下來。

本來在 A 分支工作,突然要切換到另外的分支(也可以是主分支master)完成一個 bug 的修改

git clone 主分支的代碼到自己的工作目錄,然后創(chuàng)建一個分支,進(jìn)行自己的工作,這里就記錄它為 a 分支。這個時候,如果收到一個重大 bug ,需要立馬修復(fù)。這個時候就需要放下當(dāng)前手頭的工作,切換回主分支(master 分支),對代碼進(jìn)行修改重新發(fā)布。
這里就要注意了,如果你的 a 分支工作區(qū)和緩存區(qū)是干凈的,也就是在 a 分支 commit 之后再沒做任何更改,你往別的分支切換時不會有影響的。但是如果你在 a 分支有未完成的工作,也就是用 git status -s 看顯示的文件,存在沒有 add 或者 commit 的文件,你往 master 分支切換的時候,會把你在 a 分支下的工作也帶過去。

比如在 a 分支新添加了一個文件 dd.java

ysan@ysan-PC MINGW64 /e/gitTest (a)
$ git status -s
?? dd.java

這個時候切換到 master 分支,通過 git status -s文件

ysan@ysan-PC MINGW64 /e/gitTest (a)
$ git checkout master
Switched to branch 'master'

ysan@ysan-PC MINGW64 /e/gitTest (master)
$ git status -s
?? dd.java

會發(fā)現(xiàn),在 master 分支也多了一個未添加的文件 dd.java;如果你在 a 分支通過 git add 添加到緩存,切換到 B 分支的時候,會提醒你,有為提交的工作也一起跳轉(zhuǎn)到了 master 分支上。

ysan@ysan-PC MINGW64 /e/gitTest (a)
$ git add dd.java
warning: LF will be replaced by CRLF in dd.java.
The file will have its original line endings in your working directory.

ysan@ysan-PC MINGW64 /e/gitTest (a)
$ git checkout master
Switched to branch 'master'
A       dd.java

ysan@ysan-PC MINGW64 /e/gitTest (master)
$ git status -s
A  dd.java

在命令 $ git checkout master 之后就顯示了有未提交的工作,也就是 dd.java 文件也一起跳轉(zhuǎn)到分支 master 上。如果 master 分支是穩(wěn)定版本,而自己的工作 a 分支有著自己新添加的功能,但是還未完成,更沒有完成測試,卻將代碼帶到了 master 分支,這個時候運(yùn)行 master 分支的代碼將不再是穩(wěn)定版本,也就會造成一定的風(fēng)險。

而且這個時候在 master 分支上進(jìn)行其他工作而不編輯 dd.java 文件,目前來說是沒有影響。然而,一旦在 master 分支上運(yùn)行 git commit 命令進(jìn)行提交,dd.java 文件也會在 master 分支上進(jìn)行提交。

也就是說,一旦你把 a 分支上尚未完成的工作帶到了 master 分支上并且在 master 上成功提交,那么你本來在 a 分支進(jìn)行的工作則會被提交到本地庫中的 master 分支上,那么該部分工作在 a 分支下用 git log 命令查看不了,只能在 master 分支下查看。在實際的工作中,兩個分支的混亂容易導(dǎo)致提交沖突。

解決辦法

其一:切換分值之前,通過 git status 查看文件狀態(tài),對沒有 add 和 commit 的工作,如果可以就都提交了。

其二:如果未完成的工作實在不方便提交,可以通過 git stash 進(jìn)行保存,再切換分支。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容