所以我们最终设置了git,但我真的很困惑如何处理多人合并。
我有一个分支test
,我今天早些时候合并了一个功能。另一位开发人员现在将他的新功能合并到test
,并且在此过程中 - 因为他的新功能在我合并之前已经分支 - 它删除了我添加的文件。
1)我们如何解决这个问题?
2)如何在不询问的情况下强制git不删除或覆盖文件?
编辑:推论:我们什么时候应该拉,我猜我们什么时候拉(我在合并前猜?)我们应该将拉出的副本合并到分支特征中?
答案 0 :(得分:2)
那里有一些非常错误的东西。文件不只是从分支中删除,Git将始终告诉您是否存在冲突,并且默认情况下会发生这种情况。如果他们被正确地提交,他们仍然可以恢复。
您需要确保其他开发人员在执行合并时知道他正在做什么。如果事情与你描述的完全一样,听起来他付出了相当大的努力来合并他的功能,代价是不必正确处理合并,这意味着他选择删除你之前的更改。
当你自动拉Git合并并警告任何合并冲突。如果您想避免自动合并,请执行git fetch,然后重新绑定您的分支。
答案 1 :(得分:1)
考虑以下时间表(事件顺序):
test
并将其推送到共享存储库。我们将其称为origin/test
pull
test
分支到您的本地存储库pull
test
分支到*他的*本地存储库push
分支中的更改合并(或仅test
)到origin/test
。这应该是顺风顺水。我在这里保持简单,假设没有其他人在临时test
进行任何更改
push
将代码更改为origin/test
在第5步,Git会抱怨。为什么?因为origin/test
的状态自开发人员2 pulled
以来已发生变化。 Developer-2必须
pull
。如果您和开发人员2在代码库的同一区域工作,他可能会遇到合并冲突。push
他对共享存储库的更改开发人员2可以破坏共享存储库中的更改的唯一方法是,如果他在没有先拉动的情况下推送他的更改时使用--force
标志。