首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当调用git拉时删除本地提交

当调用git拉时删除本地提交
EN

Stack Overflow用户
提问于 2011-09-27 11:53:48
回答 1查看 805关注 0票数 0

我已经与错误(程序没有编译)和之后提交:git push (I)

我的同事完成了:git pull (She)并获得了未编译的存储库状态。在此之后,添加了一些提交(关于项目文档-编译并不重要),并再次执行:git push (She)

在此之后,我们得到了如下的存储库状态:

  1. 一些她提交了
  2. 一些她提交了
  3. 我的错误提交了
  4. 我的另一次提交

我想要完全删除提交3。为此,我做了

git-rebase --onto <sha of commit 4> <sha commit 3> master

git push --force

现在我们有了正确的存储库状态(没有提交3),但是使用了所有其他的更改。但是,如果她知道

代码语言:javascript
复制
git pull
git push

她将与本地提交#3进行合并,然后将其提取到存储库。我如何使某人(不仅是她)在git拉出后纠正存储库的状态-所有更改,但不提交#3?

注释:可能是在上面添加了本地提交(在另一个案例中是特性)。她的本地存储库比服务器的存储库更新。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-27 12:01:00

你已经发现了改变公共历史的问题:每一个看到这种变化的人都必须同意以同样的方式改变它。在这种简单的情况下,通过执行与您相同的rebase命令,它们很可能获得新的适当版本:

代码语言:javascript
复制
git-rebase --onto <sha of commit 4> <sha commit 3> master

这将更新他们的本地主站,以便再次与远程主分支达成一致,并且他们可以继续正常工作。

没有办法自动导致这种情况发生。对于那些只跟踪master或者在进行此重基时按下所有更改的人来说,最简单的方法可能是执行git reset --hard origin/master,但这将删除在执行重基时不在中的当前分支上的任何本地提交。

实现相同目标的另一种方法是使用git revert。这将简单地添加一个新提交,它与不同的仲裁相反。这并不是编辑历史,它只是以一种撤销历史的方式添加到历史中。这导致问题提交仍然出现在git log和相关命令中,但不会给其他人带来问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7568654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档