为了账号安全,请及时绑定邮箱和手机立即绑定

强制更新后的Git拉

强制更新后的Git拉

Git
狐的传说 2019-11-21 14:21:43
我只是压缩了一些提交git rebase并做了一个git push --force(这是邪恶的,我知道)。现在其他软件工程师有不同的历史记录,当他们执行时git pull,Git将合并。除了执行操作外,是否有办法解决此问题rm my-repo; git clone git@example.org:my-repo.git?我需要类似的相反的东西git push --force,但git pull --force没有给出预期的结果。
查看完整描述

3 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

接收新的提交


git fetch

重启


您可以使用重置本地分支的提交git reset。


更改本地分支的提交:


git reset origin/master --hard

但是要小心,如文档所述:


重置索引和工作树。自<commit>以来,工作树中跟踪文件的任何更改都将被丢弃。


如果您想真正保留本地所做的任何更改,请--soft重置。这将更新分支的提交历史记录,但不会更改工作目录中的任何文件(然后您可以提交它们)。


变基


您可以使用git rebase以下命令在任何其他提交/分支之上重播本地提交:


git rebase -i origin/master

这将在交互模式下调用rebase,您可以在其中选择如何应用不在您依据的历史记录中的每个单独提交。


如果您删除的提交(带有git push -f)已经被拉入本地历史记录,它们将被列为将被重新应用的提交-它们将需要作为重新设置的一部分被删除,或者它们将被简单地重新包含在历史记录中分支-并在下次推送时重新出现在远程历史记录中。


使用帮助可git command --help获取有关任何上述(或其他)命令的更多详细信息和示例。


查看完整回答
反对 回复 2019-11-21
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

git reset --soft origin/master将改变提交历史相匹配的远程和阶段的差异到远程随后被提交。在这种情况下,无需重新设置基准(由于未提交更改,因此您将无法这样做),因为提交历史记录没有差异。重置或重置两个选项-不能同时使用。请提出一个问题,如果你的情况是一个比我在这里回答不同。

查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 686 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信