章
目
录
在开发过程中,我们经常会因为迭代到新分支而忘记将分支切换到最新分支,导致将新增的代码误提交到老的分支上,如果没有push还好,一旦push,想要回滚就会稍微麻烦点,这里潘老师教大家如何去实现Git push错分支后也可以回滚远程分支代码,并将原提交的代码push到新分支。
前置说明
首先我们假设有两个分支,一新一旧,新分支为feature/V1.0.2_A,旧分支为feature/V1.0.1_A,假设不小心将一部分本该提交到新分支的代码却误提交到了旧分支,并且已经push上去。现在我们要将这部分旧分支代码还原,并将这部分误提交的代码再提交到新分支上,那么问题就解决了。
操作步骤
第1步:查看git提交日志
首先在旧分支上查看git提交日志,使用git log指令,找到我们误提交代码之前的commit id也就是我们的还原点,假设为ae94e547c2xxxxxx1。
第2步:将旧分支代码撤回暂存区
首先我们要将旧分支误push的代码撤回带暂存区。我们直接使用如下指令:
git reset --soft ae94e547c2xxxxxx1
此时我们会发现在还原点之后的误提交的代码,都回到了暂存区,但是要注意,此时远程仓库中的误提交代码还在,我们后面再处理。
第3步:切换新分支
这时候我们切换到最新分支,如果有需要merge的就merge,然后将本地暂存区的代码commit并push到新分支,这样误提交代码就提交到了正确的分支。
第4步:强制还原旧分支
最后,我们再切换到旧分支,此时暂存区已经没有新代码了,如果还存在新代码,就先使用–hard强制回退到前一个版本,并且本地不会残留新代码,然后我们再push
git reset --hard ae94e547c2xxxxxx1
如果你直接push,会发现需要merge远程那部分误提交代码,因此我们不能拉取,也不能merge,而是要将本地的代码直接强制push上去,覆盖掉误提交代码,执行指令如下:
##语法:git push -f 远程仓库名 当前分支名:远程其他分支名
##案例
git push -f origin feature/V1.0.1_A:feature/V1.0.1_A
-f表示force强制更新,如果是相同分支名,后面的名称不写应该也可以。
这样原先的旧分支就被还原了。