1

我们有 2 名开发人员使用 EGit。一种适用于 Windows,一种适用于 Linux

我们制定了如下合作政策:

  • 有一个中央(裸)存储库
  • 最初,每个开发人员都从中央存储库中签出并在本地工作。
  • 当两者需要同步工作时,我们从/向中央存储库拉/推。

我们按照我们的想法使用中央存储库,有了它,我们将来可以轻松地与团队中的更多开发人员协作。

一切正常,直到我们检测到当一个开发人员修改已被另一个开发人员移动到另一个目录的文件时根本没有冲突。以下是步骤:

  • 一位开发人员,将文件移动到另一个位置;将其提交到他的本地存储库;将其推送到中央存储库。
  • 另一个更改该(相同)文件的内容;将其提交到他的本地存储库。拉取中央存储库。

我们预计当第二个开发人员进行“拉动”时会有冲突报告。但没有冲突。他的工作目录(和他的本地存储库)中出现了 2 个文件:

  • 他修改的那个
  • 以及第一个开发人员已移至另一个目录的那个。

谁能告诉我们我们的错误是什么?

我们的工作方式是否违反了 git 的设计?

我们是 git 新手(对 CVCS 很熟悉)。遇到这个问题,我们非常担心,因为这意味着我们团队的工作很难合并。我们认为我们必须做错事。感谢您为我们澄清。

4

2 回答 2

0

我的猜测是你没有移动文件。当您移动文件时,它是删除和创建。当人们添加更改时,他们通常忘记添加 -u 或 -A 选项以不仅包括新文件、跟踪文件,还包括已删除文件。

移动文件后,请确保暂存更改的删除部分。如果有疑问,请使用 git log --stat 检查您是否从执行移动的提交中的旧位置删除了文件。

希望这可以帮助

于 2011-05-01T18:31:28.747 回答
0

因为我使用的是 Egit,所以没有命令行。而且我确信我在提交时检查了已删除的文件和添加的文件。

但奇怪的是,我再次尝试:

  • 删除我的本地存储库(从存储库视图,右键单击,删除...)
  • 从中央回购(克隆)再次结帐
  • 并重做我上面提到的步骤

一切都按预期工作。我以前的本地存储库一定有问题,因为我可以创建团队 > 拉取。我需要先获取然后合并。像上面一样再次检查后。现在好了。

于 2011-05-02T14:57:54.707 回答