我已经与错误(程序没有编译)和之后提交:git push (I)。
我的同事完成了:git pull (She)并获得了未编译的存储库状态。在此之后,添加了一些提交(关于项目文档-编译并不重要),并再次执行:git push (She)
在此之后,我们得到了如下的存储库状态:
我想要完全删除提交3。为此,我做了
git-rebase --onto <sha of commit 4> <sha commit 3> master
git push --force
现在我们有了正确的存储库状态(没有提交3),但是使用了所有其他的更改。但是,如果她知道
git pull
git push她将与本地提交#3进行合并,然后将其提取到存储库。我如何使某人(不仅是她)在git拉出后纠正存储库的状态-所有更改,但不提交#3?
注释:可能是在上面添加了本地提交(在另一个案例中是特性)。她的本地存储库比服务器的存储库更新。
发布于 2011-09-27 12:01:00
你已经发现了改变公共历史的问题:每一个看到这种变化的人都必须同意以同样的方式改变它。在这种简单的情况下,通过执行与您相同的rebase命令,它们很可能获得新的适当版本:
git-rebase --onto <sha of commit 4> <sha commit 3> master这将更新他们的本地主站,以便再次与远程主分支达成一致,并且他们可以继续正常工作。
没有办法自动导致这种情况发生。对于那些只跟踪master或者在进行此重基时按下所有更改的人来说,最简单的方法可能是执行git reset --hard origin/master,但这将删除在执行重基时不在中的当前分支上的任何本地提交。
实现相同目标的另一种方法是使用git revert。这将简单地添加一个新提交,它与不同的仲裁相反。这并不是编辑历史,它只是以一种撤销历史的方式添加到历史中。这导致问题提交仍然出现在git log和相关命令中,但不会给其他人带来问题。
https://stackoverflow.com/questions/7568654
复制相似问题