如何处理git中的merge / pull

时间:2011-05-16 21:18:17

标签: git merge pull

我必须使用不同的电脑。我在一个文件中更新了文件A,B和其他文件,在另一个文件中更新了B,C和其他文件。

文件B中的更新是代码的不同部分。我两个都承诺过。 我把A和B推到了github。

问题:

  • 现在我该怎么办?

  • 我应该拉吗?或者我应该先推?

  • 如果我推,文件A会被覆盖吗?

  • 如果我拉,文件C会被覆盖吗?

  • 我需要采取什么样的流程?

  • 对于具有不同版本的文件B,我需要做什么?我可以合并吗?

3 个答案:

答案 0 :(得分:2)

您必须首先进行拉动,以便您的添加功能位于服务器中。一旦你拉(它将以前推送的mod与你的本地mod合并),那么你可以推。  BTW:这不是github,这是简单的git。我建议以下书来理解git的工作原理:

http://book.git-scm.com/

答案 1 :(得分:1)

拉 - > rebase - >推:http://learn.github.com/p/rebasing.html

答案 2 :(得分:0)

通常的情况是,在推升更改之前先进行拉动。但可能是你的提交的当前祖先是相同的,因为你最后一次拉(即所有其他人还没有推送任何东西),这意味着不需要合并,你只需推送你的更改而不需要拉。

一旦其他人推动了他们之间的更改,那么你总是必须将他们的更改提取到你的更改中(这是git创建所谓的合并提交的地方,这是一个未按常规方式创建的提交git add,git commit等)。现在,您的存储库与最新的更改同步,您可以安全地推送中央存储库与您的同步。

在这种情况下,你必须先拉,这意味着C不会被覆盖,因为两个存储库都有相同的版本(记住,你只在两个存储库中更改了B)。

对于B,你有两个必须由git合并的不同版本,可能会有冲突。但这正是拉动,它是一个提取(同步您的存储库)和跟踪远程分支的本地分支之间的合并,例如, master与origin / master合并。

最后A会发生同样的事情,第一个回复到A的变化将是一个简单的合并到另一个存储库中的A,因为修改后的A是从A的相同版本(相同的blob)修改的在另一个回购中。

希望这能清除一些东西。

干杯!