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

如何重新同步两个git分支?,git,merge,Git,Merge,我有两个分支,master和test。当我尝试将master合并到test中时,git认为一切都是最新的,但如果我运行gitdiff master test,我会得到一个意想不到的变化。在这个特殊的时刻,我希望它们完全相同 我想弄清楚如何让它们再次相同。不过,我必须删除测试分支,然后从master重新创建它。然而,测试是一个共享分支,并且也存在于测试服务器上,该服务器根据提交挂钩自动拉取测试分支。我预计重新创建测试分支将破坏测试服务器的拉取尝试 有没有更干净的方法来重新同步这两个分支,或者我应该

我有两个分支,
master
test
。当我尝试将master合并到test中时,git认为一切都是最新的,但如果我运行
gitdiff master test
,我会得到一个意想不到的变化。在这个特殊的时刻,我希望它们完全相同

我想弄清楚如何让它们再次相同。不过,我必须删除测试分支,然后从master重新创建它。然而,测试是一个共享分支,并且也存在于测试服务器上,该服务器根据提交挂钩自动拉取测试分支。我预计重新创建测试分支将破坏测试服务器的拉取尝试

有没有更干净的方法来重新同步这两个分支,或者我应该咬紧牙关,在这里手动重新同步测试服务器

我还希望有一个合理的机会,在某个时候必须对生产部门做同样的事情,这使得我在去做之前了解我在做什么变得更加重要


请注意,如果我要求git在一个分支中而不是在另一个分支中进行任何合并,那么它返回时什么也没有——所有合并都存在。这可能是一个错误的合并提交,或者是什么让我们走到了这一步。

是基于测试的分支主机吗

我能想到的原因是,在您当前的场景中,您的主分支位于测试分支之后,这意味着测试分支已经有了主分支的提交和它自己的提交

如果您使用的是github或gitlab,您可以查看网络图,看看它们有什么问题

另外,确保你没有在某个时候更改你的gitignore


如果master在测试之后,我认为您同步它们的唯一合理方法是将测试合并到master,但这将是您希望将其用于生产的时候。

不是一个完整的答案,因为没有足够的信息来完成完整的答案,只有几点建议:

  • 运行
    git日志测试--而不是master
    。因此,您将获得在
    test
    中但不在
    master
    中的提交列表
  • 反转参数(
    …master--不是test
    )。很可能你会在这里得到一个空的列表
  • 当然,您不应该自愿删除已发布的分支,因此您可能会给您和/或您的同事带来各种问题。但是,如果您清楚地了解存储库的状态,您可以使用
    gitpush-f
    。但是,在强制覆盖远程远程远程遥控器的状态之前,请三思而后行
  • 理解回购当前状态的一个好方法是可视化回购,例如使用本地工具(如
    gitk--all
    )或远程服务(每个流行的主机(如github或gitlab)都有自己的webtools)
  • 我建议使用
    git-burn
    (甚至
    git-gui-burn
    )来理解特定行的提交来源。或者,您可以
    git log-p
    获取提交列表及其更改
  • 无论如何,我估计手工修改回购协议的必要性极低。可能你有一个相对简单的问题,只是没有足够的信息来完全理解它

  • 如果分支测试中已经有一些提交,那么测试和主测试之间存在差异是正常的。当您尝试合并时,它实际上尝试做的是在测试分支分叉后将主分支中的其他提交合并到测试分支中。如果主分支没有额外的提交,那么就没有什么可以合并(从主分支到测试)。@GordonLiang-正如我提到的,在这个特定的时间点上,我希望它们是相同的,因为我已经合并了所有内容,只是git diff表明它们不一样。