Git 切換分支,將當前分支的修改帶到下個分支
使用剛初始化的 git
項目進行開發時,切換分支的時候發現 dev
分支的修改帶到了 master
分支。
1、出現原因
原因在於 dev
分支擁有與 master
相同的 commit
歷史,git
此時會帶着當前分支的修改到下個分支中,通過 git log
可查看 commit
歷史。
1.1、例子
我現在本地擁有 dev
和master
分支,修改了 dev
分支上的 **application.properties **文件,此時git checkout master
切換到master
分支,有以下提示
# 切換到master,提示application.properties已經修改
D:\WebTeam\MyBatis_Plus\mybatis_plus>git checkout master
Switched to branch 'master'
M src/main/resources/application.properties
Your branch is up to date with 'origin/master'.
此時在 master
分支可以看到已經修改了的 application.properties 文件。
執行 git log
可以看到 dev
分支與 master
相同的commit
歷史,當然只有在初始化項目時 dev
分支才會擁有與master
一樣的 commit
歷史,后面一般在dev
分支進行 commit
,再合並到master
。
2、Please commit your changes or stash them before you switch branches.
當在dev
分支做了修改,而且dev
分支與master
分支的commit
歷史不一致,想切回master
分支時就會有 Please commit your changes or stash them before you switch branches. 提示,翻譯過來的意思是“在你切換分支之前請先提交你的修改或者暫存他們”。
因此想要切換分支就需要用到git commit
命令或者git stash
命令。
2.1、不應用當前分支的修改,單純地切換分支
很多時候我們並不想提交,只是想單純的切換分支,不想把修改帶到切換的分支,那就使用git stash
保存工作區和暫存區的修改到堆棧中,就可以切換到master
分支了,當切回dev
分支時再執行git stash pop
取回原先的修改就可以了。執行命令如下;
# 保存dev分支的修改到堆棧中
$ git stash
# 切換master分支
$ git checkout master
# 切回dev分支
$ git checkout dev
# 獲取堆棧列表
$ git stash list
# 取回堆棧最新的修改
$ git stash pop
2.2、應用當前分支的修改到切換的分支中
由於 git stash
的堆棧是所有分支共享的,所以 master
分支也可以取得dev
分支的修改,過程非常的簡單。
# 保存dev分支的修改到堆棧中
$ git stash
# 切換master分支
$ git checkout master
# 取回堆棧最新的修改
$ git stash pop
# 或者取回堆棧指定的修改
$ git stash apply stash@{0}
參考博客:當前分支的修改帶到下個分支中