【发布时间】:2014-04-17 14:33:01
【问题描述】:
我们在使用 SVN 多年后才开始使用 git,有时,我必须承认,这很令人困惑。举个例子——
- User1 对 a.java 进行更改并推送到远程服务器。
- User2 对 b.java 进行了更改。他不能立即推动(与 SVN 有偏差,但没关系)。他需要先从远程服务器拉取,然后将他的更改推送到远程服务器。这将显示为单独的合并提交,并已在 here on stackoverflow itself 中进行了精美的解释
- 现在是有趣的部分。如果我们将此推断到多个文件,则可能与 User2 更改的文件之一发生冲突。这一次,git 不能进行自动提交。 User2 必须解决冲突,然后提交此合并。
这很令人困惑,因为没有对这么多文件进行更改的用户会怀疑将它们作为此合并提交的一部分提交(尤其是在 SVN 背景下)。如果这个用户现在只是提交他解决冲突的文件并推送到远程,Git 将停止提供他没有推送的文件的最新版本。这让人感觉我在团队的其他成员中失去了工作。
在这个长篇故事之后我的问题是,为什么会这样?为什么 GIT 不应该将其他文件保留为最新版本? git 是否应该知道用户没有提交它作为自动合并的一部分带到用户机器的所有文件?有没有一种机制可以避免我们犯这个错误?
【问题讨论】: