在rebase之后git commit和push不工作

时间:2014-08-18 04:31:27

标签: git egit

我刚刚针对主人重新设立了一个分支,然后提交并推送了最终结果。

这似乎有效。 Git状态显示

无需提交,工作目录清理

但是,当我检查远程存储库时,更改的文件没有到达。这是令人困惑和有点可怕,因为我的本地客户说一切都很花哨(所有文件都安全地远程存储),当它真的不是。

有关以下方面的任何建议:

  • 即使当地的git认为没有什么可推动的,如何强制推送到远程?
  • 如何确保客户端正确指示同步状态?

2 个答案:

答案 0 :(得分:0)

  

如何确保客户端正确指示同步状态?

在推送之前,您可以通过以下方式检测推送是否是快进:

git rev-list origin/yourBranch ^yourBranch

如果返回任何提交,则意味着yourBranch历史记录将替换来自origin的那个,您必须强制推动它才能实现。
请点击“How to detect a forced update”了解更多信息。

答案 1 :(得分:0)

对于第一个问题,答案是否定的,但是当局部git认为什么都没有时,不应该发生这种情况。 Git保持远程跟踪分支以跟踪远程分支的状态。您可以使用“git branch -a”来查找它。

git branch -a

对于rebase之后的推送,你最好添加选项“--force-with-lease”。因为它可能不是rebase之后的快速合并。并且“git push”将在没有“--force *”选项的情况下以非快速合并方式失败。使用“--force-with-lease”,只有当您执行“rebase”时代码不再是最新的时,推送才会失败。它确保你不会覆盖其他人的新提交。

git push origin yourBranch --force-with-lease

对于第二个问题,您可以使用“git log”检查您的分支和远程跟踪分支之间是否有提交,例如:

git log --graph --pretty=oneline origin/yourBranch..yourBranch