Git 切換分支,將當前分支的修改帶到下個分支


Git 切換分支,將當前分支的修改帶到下個分支

使用剛初始化的 git 項目進行開發時,切換分支的時候發現 dev 分支的修改帶到了 master分支。

1、出現原因

原因在於 dev 分支擁有與 master相同的 commit 歷史,git此時會帶着當前分支的修改到下個分支中,通過 git log可查看 commit歷史。

1.1、例子

我現在本地擁有 devmaster分支,修改了 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

image-20210318115416256

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. 提示,翻譯過來的意思是“在你切換分支之前請先提交你的修改或者暫存他們”。

image-20210318135414783

因此想要切換分支就需要用到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}

參考博客:當前分支的修改帶到下個分支中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM