当前位置:  开发笔记 > 编程语言 > 正文

回到Git

如何解决《回到Git》经验,为你挑选了3个好方法。

我承诺并推出了几个补丁:A1 - > A2 - > A3 - > A4(HEAD)

每个人都将这些变更集合到他们的本地副本中.

现在我们要"回滚"到A2,并从那里继续发展 - 基本上扔掉了A3和A4.最好的方法是什么?



1> Aristotle Pa..:

从工作副本的根目录开始

git checkout A2 -- .  
git commit -m 'going back to A2'

使用git revert用于此目的会很麻烦,因为你想摆脱整个系列提交的,并revert撤销他们一次一个.

你也不想要git reset.这只会改变你的master分支指针:你没有记录错误的方向.协调也很痛苦:由于您更改的提交master不是远程存储库的master分支指针的子项,因此推送将失败 - 除非您首先添加-f(强制)或删除master远程存储库中的分支并通过推送重新创建它.但是那些试图拉动的人仍然会在他们的本地master分支中拥有旧历史,所以一旦origin/master发散,git pull将尝试执行合并.这不是世界末日:他们可以通过这样做来摆脱这种情况git rebase --onto origin/master $old_origin_master_commit master(即将他们在旧origin/master的顶部做出的本地提交改为新的顶部origin/master).但Git不会知道自动执行此操作,因此您必须与每个协作者协调.简而言之,不要那样做.



2> Pat Notz..:

丢弃这些提交可能会对从存储库中提取的任何人产生一些负面影响.作为另一种选择,您可能需要考虑从A2开始创建备用开发分支:

A1-->A2-->A3-->A4 (master/HEAD)
      \
       -->B1-->B2 (new-master/HEAD)

这样做很简单

git branch new-master master~2



3> freespace..:

您想要git-revert 并且git-reset取决于您想要如何对待A3和A4.要删除A3和A4的所有痕迹,请使用git-reset --hard.要保留A3和A4并记录您要恢复的事实,请使用git-revert.

编辑:亚里士多德Pagaltzis的git-checkout解决方案是优越的,但对于小的恢复,我没有看到问题git-revert.尽管如此,我要求未来的投票给予亚里士多德帕加齐兹的回答

我发现git magic是git的一个很好的资源.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有