完全覆盖之前的git提交

5

我的同事在我们的git仓库中提交了一个错误。我想提交一些更新的代码,但是我还没有git pull,结果我比HEAD落后1次提交。如果我落后,该如何完全忽略他的更改并覆盖他的错误?

您可以使用以下命令强制提交并覆盖同事的更改:
```git git push --force ```
这将强制您的提交成为新的HEAD,并永久删除同事的更改。请注意,此操作可能会导致数据丢失,因此在执行此操作之前,请确保您已经备份了您的数据。

首先还原到之前的版本,然后提交你的更改。 - Randy
你有权限访问 Git 服务器吗? - TheOneTeam
2个回答

8

你可以像其他答案建议的那样强制推送,但更安全的方法是先拉取他的更改,然后使用git revert撤销他的提交,这将完全撤消他的所有更改。这不会有意失去更改的风险:

git pull
git revert <treeish naming his commit>
git push

我们忘记添加.gitignore文件以防止添加已编译的文件,而且我不太确定如何解决合并冲突。 - pqn
1
如果你在一个由不止一个人组成的团队中使用任何类型的源代码控制工具,我建议你在进行其他任何操作之前先学习合并冲突的解决方法。 解决冲突是一项常规和必要的活动。 Git 内置了 kdiff3,这是一个跨平台的冲突解决工具。设置它将是一个很好的开始。我写了一系列关于 Git 的文章,其中一篇 介绍了如何处理合并冲突,你可以看看。 - Ryan Stewart

6
我猜你的意思是他向中央仓库提交了一个糟糕的提交。
如果是这样,那么你可以使用“git push -f”推送你的版本,这将覆盖仓库。当然,这也会破坏历史记录(“f”表示强制),所以你的同事们将不得不重新克隆中央仓库。

6
你的同事无需重新克隆代码库。只需告诉他执行命令 'git fetch; git rebase origin/master' 或者简单地使用 'git pull --rebase' 命令进行操作。然后,他需要修复或完全删除他的提交。 - cmcginty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接