我必须使用不同的计算机。我在一个中更新了文件 A、B 和其他文件,在另一个中更新了 B、C 和其他文件。
文件 B 中的更新是代码的不同部分。我在这两个方面都做出了承诺。我将 A 和 B 推送到了 github。
问题:
现在我该怎么办?
我应该拉吗?还是我应该先推?
如果我推送,文件A会被覆盖吗?
如果我拉,文件C会被覆盖吗?
我需要采取什么样的流程?
我需要对具有不同版本的文件 B 做什么?我可以合并它们吗?
您必须先拉动,以便您的添加位于服务器中的内容之上。一旦你拉了(这会将之前推送的模组与你的本地模组合并),那么你就可以推送了。顺便说一句:这不是 github,这是普通的 git。我建议阅读以下书来了解 git 的工作原理:
拉 -> 变基 -> 推:http ://learn.github.com/p/rebaseing.html
通常的情况是您在推送更改之前进行拉取。但可能是您提交的当前祖先与您上次拉出后相同(即所有其他人尚未推送任何内容),这意味着不需要合并,您可以推送您的更改而不需要拉。
一旦其他人在两者之间推送了他们的更改,那么您总是必须将他们的更改拉入您的更改(这是 git 创建所谓的合并提交的地方,这是一个尚未使用 git add 以通常方式创建的提交, git commit 等)。现在您的存储库已与最新更改同步,您可以安全地推送以将中央存储库与您的同步。
在这种情况下,您必须先拉取,这意味着 C 不会被覆盖,因为两个存储库具有相同的版本(请记住,您只在两个存储库上更改了 B)。
在 B 的情况下,您有两个必须由 git 合并的不同版本,可能存在冲突。但这正是拉动的含义,它是获取(用于同步您的存储库)和跟踪远程分支的本地分支之间的合并,例如 master 与 origin/master 合并。
最后同样的事情会发生在 A 上,在第一个 repo 中对 A 所做的更改将是一个微不足道的合并到另一个存储库中的 A,因为修改后的 A 是从另一个版本中的 A 的相同版本(相同的 blob)修改的回购。
希望这清除了一些东西。
干杯!