从另一个分支复制目录

8
有一个问题"Git:从另一个分支复制目录中的所有文件"显示了如何操作。但它不会删除当前分支中已被删除的文件,而这些文件在另一个分支中已被删除。
我通常使用以下几种解决方案:
  1. 本地删除目录rm -r dir,然后执行git checkout otherBranch -- dir。它有效,但对于大型目录来说很慢。

  2. git checkout dir,然后git rm $(git diff --name-only otherBranch -- dir)。它有效,但我认为应该有更好的解决方案。

有更简单的方法吗?

我不知道其他的方法,但是我很好奇:你是否尝试运行基准测试来了解两种方法在例如github.com/git/git存储库上的表现如何? - jub0bs
@Jubobs 我敢打赌第二个选项会更快,但如果diff返回的列表太大可能会失败。此外,如果文件名包含空格或特殊字符也会失败。 - kan
你所描述的更多地涉及测试/构建/QA。如果想要在少量目录状态之间频繁切换(即分支),应该将所有状态保存在文件系统中,然后只需创建符号链接即可。这样可以实现瞬间切换。 - Joe Atzberger
@JoeAtzberger 不,有时候我这样做是因为我想将一个目录恢复到另一个修订版本。 - kan
1个回答

2
git reset otherBranch -- dir
git clean -df
git checkout .

这应该会将dir中的内容更新为另一个分支上相同目录中的内容。

2
警告:它会删除您未提交的文件。 - Abdillah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接