天天看点

git 修改分支名字_Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?...

原文地址:https://www.cnblogs.com/52php/p/6597628.html

作者:52PHP[1]

这场景挺常见,当遇到需要临时修改的 bug,当前正在开发的内容总不能删掉把,这个时候就需要把当前已经开发的代码保存下来,把 bug 改完后回归之前的开发工作

推荐使用第三种方式

原文章的第三种方式因为 idea 版本更新,使用方式有所变化,因此我对文章第三种方式的内容进行了修改和图片的添加

git 修改分支名字_Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?...

工作除了开发最新的版本之外还要对原来的版本做例行的维护,修修补补。于是有了在两个分支之间游走切换的问题,最新改版的代码在分支 new 上,旧版本的代码在分支 old 上,我在 new 上开发了一半,忽然有人给了我一个改进的需求,于是我要切换回 old 去修改代码。在这个场景下,我摸索了三种方法:

1 及时 commit 代码

在 new 分支上把已经开发完成的部分代码 commit 掉,不 push,然后切换到 old 分支修改代码,做完了 commit,所有分支互不影响,这是一个理想的方法。

2 使用 git stash

有时候写了一半的 Golang 代码,都还不能编译通过的,就被叫去改另一个分支的 bug 了。

在 new 分支上的时候在命令行输入:

或者

这样以后你的代码就回到自己上一个 commit 了,直接 git stash 的话 git stash 的栈会直接给你一个 hash 值作为版本的说明,如果用 git stash save “修改的信息”,git stash 的栈会把你填写的“修改的信息”作为版本的说明。

接下来你回到 old 分支修改代码完成,你又再回到 new 分支,输入:

或者

就可以回到保存的版本了。git stash pop 的作用是将 git stash 栈中最后一个版本取出来,git stash apply [email protected]{0} 的作用是可以指定栈中的一个版本,通过 git stash list 可以看到所有的版本信息:

然后你可以选择一个你需要的版本执行:

这时候你搁置的代码就回来了。

3 用 IDE 工具的 shelve 的功能

有一些 IDE 工具提供了 shelve 的功能,shelve 的意思是“将…搁在一边”,即把还没写完的代码先搁在一边。我开发都是使用 jetbrains 公司的 IDEA 和 PhpStorm,它们就提供了 shelve 的功能,方法:

首先在 IDE 的底部找到“Git”,点开会有 Local Changes 的选项卡,选中你要搁置的代码,点击右键,选择“Shelve Changes”,在提交的输入框中输入你的注释,以便回来的时候识别你需要的版本,点击“Shelve Changes”键即可。这时选项卡上会多一个“Shelf”的选项卡,里面就有你搁置的代码。

git 修改分支名字_Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?...
git 修改分支名字_Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?...
git 修改分支名字_Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?...
git 修改分支名字_Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?...

这时候你可以去 old 分支修改代码,改完了之后回到 new 分支,到“Shelf”选项卡下选择你要恢复的代码或者版本,点击右键选择“Unshelve”,选择 Changeist,点击 Unshelve Changes 按钮,你搁置的代码就回来了。

git 修改分支名字_Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?...
git 修改分支名字_Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?...

idea 官网对 "Shelve and unshelve changes" 功能有详细的使用文档,可以看下

https://www.jetbrains.com/help/idea/shelving-and-unshelving-changes.html

参考:

[开源中国] Git 分支管理详解[2]

[廖雪峰] Git 分支管理 - Bug 分支[3]

Git Stash 用法,方便临时处理 bug 时随时切换分支而不丢失修改[4]

参考资料

[1]

52PHP: https://www.cnblogs.com/52php/

[2]

[开源中国] Git 分支管理详解: http://www.oschina.net/question/31384_157479

[3]

[廖雪峰] Git 分支管理 - Bug 分支: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137602359178794d966923e5c4134bc8bf98dfb03aea3000

[4]

Git Stash用法,方便临时处理bug时随时切换分支而不丢失修改: http://www.cppblog.com/deercoder/archive/2011/11/13/160007.html

git 修改分支名字_Git 修复 bug 切换分支时,如何保存修改过的代码(即如何保存现场)?...

继续阅读