我该如何从另一个分支复制目录中的所有文件?我可以通过执行以下命令列出该目录中的所有文件:
git ls-tree master:dirname
我可以通过执行以下操作逐个复制所有文件:
git checkout master -- dirname/filename
然而,到目前为止,使用通配符完全失败了。这样做什么也没用:
git checkout master -- dirname/*.png
虽然我猜我可以使用一个bash脚本来实现这个,但一定有更简单的方式,对吧?
我该如何从另一个分支复制目录中的所有文件?我可以通过执行以下命令列出该目录中的所有文件:
git ls-tree master:dirname
我可以通过执行以下操作逐个复制所有文件:
git checkout master -- dirname/filename
然而,到目前为止,使用通配符完全失败了。这样做什么也没用:
git checkout master -- dirname/*.png
虽然我猜我可以使用一个bash脚本来实现这个,但一定有更简单的方式,对吧?
由于您没有尝试在树中移动文件,因此应该可以直接检出目录:
git checkout master -- dirname
git checkout master -- dirname; git add dirname; git commit -c $COMMIT_SHA1 --reset-author;
其中 $COMMIT_SHA1
可以像 branch_a
一样,并且是具有所需提交消息的提交对象。我不知道如何编程确定最近更改 dirname
的提交。 - Alexander Bird如果路径中没有空格,而且您像我一样只对特定扩展名的文件感兴趣,您可以使用
git checkout otherBranch -- $(git ls-tree --name-only -r otherBranch | egrep '*.java')
git checkout master -- *.c
的东西。 - Gregory Kuhn复制目录但不跟踪它:
git restore --source master dirname
文件
git checkout origin/sourceBranchName -- sourceBranchDirPath
例子:
git checkout origin/validation_fix -- src/test/java/validation/
git checkout sourceBranchName :
可以从源分支(sourceBranch)检出所有内容(根目录)到您的本地当前分支。
我已经亲自测试过了。谢谢!
-- Shizheng