如何在执行复杂的合并内容(如删除文件)之前进行git询问?

时间:2011-11-03 21:27:38

标签: git git-merge

所以我们最终设置了git,但我真的很困惑如何处理多人合并。

我有一个分支test,我今天早些时候合并了一个功能。另一位开发人员现在将他的新功能合并到test,并且在此过程中 - 因为他的新功能在我合并之前已经分支 - 它删除了我添加的文件。

1)我们如何解决这个问题?

2)如何在不询问的情况下强制git不删除或覆盖文件?

编辑:推论:我们什么时候应该拉,我猜我们什么时候拉(我在合并前猜?)我们应该将拉出的副本合并到分支特征中?

2 个答案:

答案 0 :(得分:2)

那里有一些非常错误的东西。文件不只是从分支中删除,Git将始终告诉您是否存在冲突,并且默认情况下会发生这种情况。如果他们被正确地提交,他们仍然可以恢复。

您需要确保其他开发人员在执行合并时知道他正在做什么。如果事情与你描述的完全一样,听起来他付出了相当大的努力来合并他的功能,代价是不必正确处理合并,这意味着他选择删除你之前的更改。

当你自动拉Git合并并警告任何合并冲突。如果您想避免自动合并,请执行git fetch,然后重新绑定您的分支。

答案 1 :(得分:1)

考虑以下时间表(事件顺序):

  1. 10月1日 - 创建test并将其推送到共享存储库。我们将其称为origin/test
  2. 10月2日 - 您pull test分支到您的本地存储库
  3. 10月2日 - Developer-2 pull test分支到*他的*本地存储库
  4. 10月4日 - 您将push分支中的更改合并(或仅test)到origin/test。这应该是顺风顺水。我在这里保持简单,假设没有其他人在临时
  5. 中对test进行任何更改
  6. 10月6日 - Developer-2 尝试 push将代码更改为origin/test
  7. 在第5步,Git会抱怨。为什么?因为origin/test的状态自开发人员2 pulled以来已发生变化。 Developer-2必须

      来自共享存储库的
    1. pull。如果您和开发人员2在代码库的同一区域工作,他可能会遇到合并冲突。
    2. Developer-2必须解决本地的任何冲突
    3. push他对共享存储库的更改
    4. 开发人员2可以破坏共享存储库中的更改的唯一方法是,如果他在没有先拉动的情况下推送他的更改时使用--force标志。