如何重新同步两个git分支?

时间:2015-11-09 22:15:04

标签: git merge

我有两个分支,mastertest。当我尝试将master合并到测试中时,git认为一切都是最新的,但是如果我运行git diff master test,我会得到一个我不能期望的差异。在这个特定的时刻,我希望它们完全相同。

我试图弄清楚如何让它们再次相同。虽然我有一个是删除测试分支,只需从master重新创建它。但是,test是一个共享分支,也存在于测试服务器上,它根据提交挂钩自动拉取测试分支。我希望重新创建测试分支会破坏测试服务器的拉动尝试吗?

是否有更简洁的方法来重新同步这两个分支,或者我应该只是咬紧牙关并手动重新同步测试服务器?

我也期待在某个时刻有必要对生产部门做同样的事情,这使我更加重要的是我在去做之前理解了我做的事情。它

请注意,如果我要求git在一个分支中的任何合并而不是在另一个分支中,它会返回任何内容 - 所有合并都存在。它可能是一个糟糕的合并提交或让我们达到这一点的东西。

2 个答案:

答案 0 :(得分:0)

基于测试的分支主人吗?

我能想到的原因是在你当前的情况下你的主分支落后于测试分支,这意味着测试分支已经拥有了主提交并且它已经拥有。

如果你正在使用github或gitlab,你可以检查一下你的网络图,看看它们是什么。

此外,请确保您在某些时候没有更改您的gitignore。

如果高手在测试之后,我能想到你同步它们的唯一合理方法是将测试合并到主人,但那就是你想把它带到生产的时候。

答案 1 :(得分:0)

不是一个完整的答案,因为它不是完整答案的足够信息,只有一些建议:

  1. 运行git log test --not master。因此,您将获得test但不在master中的提交列表。
  2. 反转参数(... master --not test)。可能你会在这里得到一个空列表
  3. 当然,您不应自愿删除已发布的分支机构,因此您可以为您和/或您的同事创建各种问题。但是,如果您清楚地了解存储库的状态,则可以使用git push -f。但在强行覆盖远程遥控器的状态之前请三思而后行。
  4. 了解回购的当前状态的一个好方法是将其可视化,例如:使用本地工具,如gitk --all或远程服务(每个流行的托管,如github或gitlab都有自己的webtools)。
  5. 我建议使用git blame <file>(或甚至git gui blame <file>)来了解特定行的提交来自何处。或者,您可以git log -p获取提交列表及其更改。
  6. 无论如何,我估计手动修改回购的需求极低。可能你有一个相对简单的问题,根本没有足够的信息来完全理解它。