我在其中创建新文件的目录已被移动的git合并分支

我在其中创建新文件的目录已被移动的git合并分支,git,git-merge,git-status,Git,Git Merge,Git Status,我想合并到一个目录已被移动的分支中,并且我已经在我的分支中的这个目录中添加了文件。但是,当我尝试这样做时,分支中的新文件没有移动到新目录 我不确定这是否相关,但该存储库中的另一个复杂问题是,“新”目录过去也存在,而另一个分支同时删除了新目录的旧版本,并将旧目录移到其顶部。新目录的旧版本的出现是由于出于版本控制目的而滥用了存储库中的目录,这实际上应该由git来处理,但当时这样做很方便 那么,在执行“交互式合并”(即解决合并冲突或使用git merge--no commit)时,如何找到所有新文件并

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

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

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

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

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

  • 对于大多数被忽略的文件,第2点应该不是必须要避免的,但是有一些类型的文件在以某种方式移动时不能正常工作,因此如果确实要删除它们,可以执行
    git clean-i-x-d

    对于第1点,您可以通过执行
    git签出--
    来执行删除操作

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

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