【问题标题】:how to combine commits and push to the remote如何组合提交并推送到远程
【发布时间】:2018-11-02 14:59:42
【问题描述】:

一开始本地分支是uptodate的,现在我用git rebase -i HEAD~3,将两个最新提交的pick修改为fixup,合并本地分支的3个提交,现在我想推送本地分支到远程。而且我只想在远程显示一个组合提交。 但是,合并后本地分支落后于远程两次提交,我无法直接推送。我该如何处理?

【问题讨论】:

标签: git git-branch git-commit


【解决方案1】:

免责声明git push --force 很危险;使用它需要您自担风险。

如果您真的想这样做并合并提交,您可以在本地存储库上使用git squash 然后git push --force 来覆盖远程上的内容。

--

请注意,git push --force 将更新分支以指向您的新提交,因此旧的提交将永久无法访问,除非您有提交标识符或找到它的方法并且该提交尚未被垃圾收集。这在托管的 git 服务上通常是不可能的,尽管 GitHub 确实有一个活动日志。

此外,git push --force 可能会在其他人在同一个分支上工作并且没有预料到更改时会导致问题。

【讨论】:

  • “强制推送”不会覆盖任何内容。相反,它将新提交上传到远程并强制远程分支指向其中的最后一个。以前的提交仍然可以从客户端和服务器上的 reflog 访问。强制推送的“危险”部分是当您与同一分支上的其他人协作并且他们不期望这样的变化时。
  • 好吧,也许我的回答写得不好。我会更新它以更好地表达。然而,在许多情况下,包括大多数托管的 git 站点,reflog 是不可访问的,这使得强制推送成为永久性的。
猜你喜欢
  • 2018-03-29
  • 2015-07-15
  • 1970-01-01
  • 2012-06-07
  • 2013-12-06
  • 2020-01-18
相关资源
最近更新 更多