Git Syncing:Code of Kicked from One Environment;如何调查?

时间:2011-09-16 22:40:27

标签: git version-control

我使用Git 来帮助委派项目的过程,该项目的代码库由不断增长的开发团队同时开发。它完成了我们需要它做的几乎所有事情,但是每一次经常出现一个特定的障碍,其解决方案逃脱了我:某些代码被踢出

起初这个问题听起来相当通用,但我不知道如何“分类”这个问题,而且我不确定诊断它的最有效方法。但是,我可以通过快速播放来解释它。

播放逐播放

设置:我们有三个环境:A,B和C.每个环境都是中央存储库的克隆。

  • 刚刚修复了一项功能。 B& C仍然有破碎的版本。
  • B想要A代码,对修正后的功能进行修饰。
  • C是我的环境,我执行Git任务。
  • 我合并了B& C首先,因为任何冲突都会更容易解决。
  • 我推送此结果,然后将其拉入A,并解决那里的冲突。
  • 我推动这个结果,然后把它拉进B&下进行。

突然间,A的解决方案消失了。该功能再次被打破。我得到的印象是,A的新修正代码被错误地替换了。

问题#1:订购问题了吗?

我的印象是不同克隆推拉的顺序不应改变结果。我对么?或者我的问题与推动和拉动的顺序有关吗?

问题2:哪些工具可用于诊断此问题?

即使使用了 git diff 和GUI日志树视图,例如 gitk TortoiseGit ,解决方案有时仍然不清楚。 Git套件中是否还有其他工具,它们表示代码如何移动,或者如何确定首选项?

1 个答案:

答案 0 :(得分:1)

不,订单无关紧要。您的问题在于您忽略了如何您正在进行合并或解决冲突的详细信息。你不是在正确的时间提交需要它的东西,或者你不应该使用--force,或者在某些时候意外地使用错误的回购,或类似的东西。

我建议您测试您的功能并在每个小步骤之间运行git statusgit log,以确保提交的内容是您认为已提交的内容。 A的回购中的git reflog是一个很好的资源,可以帮助您查看更改何时消失并将其恢复,但您需要缩小导致问题的确切步骤。

另外,如果我可以提出建议,如果你自己做了所有的git任务,那么你真的不需要一个单独的中央存储库,因为它只是添加了多余的步骤。如果B想要A的代码,它应该像直接从A到B的拉动一样简单。然后当B完成化妆品更改时,直接从B拉到其他人。每次到处都试图融合一切,每次都必然会让你迟早。