-1

我想合并到一个目录已被移动的分支中,并且我已经在我的分支的这个目录中添加了文件。但是,当我尝试这样做时,我的分支中的新文件并没有移动到新目录中。

我不确定这是否相关,但这个存储库中的另一个复杂情况是“新”目录曾经也存在,而另一个分支同时删除了新目录的旧版本并将旧目录移到顶部其中。新目录的旧版本的存在是由于我们的存储库中的目录出于版本控制目的而被滥用,这实际上应该由 git 处理,但当时这样做很方便。

那么,我如何在进行“交互式合并”(即解决合并冲突或使用git merge --no-commit)时,找到所有新文件并将它们移动到新目录?

问题是,在这种“合并状态”中:

  1. 合并期间要删除的文件实际上尚未删除。我不想将它们移动到新目录,因为我担心它们可能是这些文件的过时版本。
  2. 旧目录中还有一些被忽略的文件。我也不想把它们移过来。
  3. git status不显示添加的新文件,因为它们不是 - 它们已经提交到当前分支。
  4. 有问题的文件实际上存在于新目录旧目录的工作树中,尽管它们似乎没有在新目录中使用 git 注册(可能是 git 错误?我对这里发生的事情感到困惑)
4

1 回答 1

0

对于大多数被忽略的文件来说,第 2 点确实没有必要避免,但是有些类型的文件在以某些方式移动时无法正常工作,所以如果你真的想删除它们,你可以这样做git clean -i -x -d <old directory>

对于第 1 点,您可以通过执行删除操作git checkout -- <old directory>

第 3 点现在不重要了,因为我们现在拥有了所有要移动的文件——而且只有那些文件——存在于旧目录中。

现在剩下的就是移动它们。这有点棘手,因为新目录不是空的,但是您可以在 Linux 和 Mac OS X 上使用此答案。不幸的是,该脚本没有使用 git 注册移动,因此您可能希望将mv命令更改git mv -f为脚本(-f由于第 4 点,在这种情况下必须提供)。

于 2015-08-05T19:07:15.390 回答