当前位置: 首页 > 科技观察

每日一技能:使用Git修改错误分支上的代码怎么办?

时间:2023-03-17 11:54:34 科技观察

我们知道,在使用Git的时候,应该正确的使用它的分支(Branch)功能。使用不同的分支开发不同的功能,最后合并到主分支。但是有时候会出现这样的情况——我写完了代码,却发现自己写错了分支。这时候,如何在不修改当前分支的情况下,将我的修改迁移到目标分支呢?让我们用一个简单的例子来说明这种情况。首先创建一个文件夹:test_git,在里面创建一个1.txt文件。这个文件内容如下:11111222223333344444aaaaabbbbbccccc如下图所示:接下来我执行命令gitinit,将当前文件夹作为git源,把1.txt提交给源,让git管理.现在,我基于当前分支创建一个dev分支。并修改新分支中的1.txt文件:gitcheckout-bdevvim1.txtgitadd1.txtgitcommit-m'change1.txt'好了,现在准备工作就完成了。我现在有两个分支master和dev。每个分支内都有一个名为1.txt的文件。并且两个1.txt文件的内容前半部分相同,后半部分不同。如您所见,我现在在dev分支上。这时候想修改master分支上面的1.txt。但是我忘了切换分支。于是我直接在dev分支上修改了1.txt:红框里的内容本来是想在master分支上修改的。如果我直接用命令gitcheckoutmaster尝试切换分支,git会报错,没办法切:很多人可能会这样做:打开一个记事本,将修改的内容记录在1.txt中。然后使用命令gitcheckout--1.txt将1.txt恢复到修改前的内容。然后切换到master分支。然后根据记事本中记录的修改内容,将代码粘贴到1.txt文件中。如果只修改1个文件就可以了。但是在软件开发中,你可能会修改很多文件。所以这种方法会变得非常笨拙。但其实git早就预料到了你有这个需求,所以它早就有了解决方案。让我们回到刚才在dev分支修改1.txt的时候:此时不要执行gitadd命令。只需要依次执行以下三个命令:gitstashgitcheckoutmastergitstashpop运行效果如下图所示:然后,我们打开1.txt文件:可以看到刚才的修改已经自动应用到1.txt的主分支。gitstash会缓存当前修改的内容,并将当前工作区恢复到你修改前的状态。然后切换回master分支,执行命令gitstashpop,将刚才的修改应用到master分支的1.txt文件中。如果没有冲突,会自动修改1.txt文件。如果有冲突,需要在打开1.txt文件后手动解决冲突。可以看到,使用gitstash命令比手动记录修改的内容,切换分支,然后再改要方便的多。更多Git相关的技巧,可以在微软提供的学习网站上学习:Git入门-学习|微软文档[1]。参考[1]Git简介-学习|MicrosoftDocs:https://docs.microsoft.com/en-us/learn/modules/intro-to-git/?WT.mc_id=DT-MVP-5003916本文转载自微信公众号「未听代码」,您可以通过以下二维码关注。转载本文请联系Code公众号。