从其他分支复制文件版本或提交而不覆盖当前版本?

时间:2019-03-22 23:59:57

标签: git

作为测试脚本的一部分,我想从origin/master的开头复制文件的版本 而不 ,以覆盖该文件的当前版本在我目前已结帐的分支中。

要解释一下,如果我跑步:

git checkout origin/master -- a.txt

这将覆盖我当前所在的分支机构中的a.txt我不希望这样做。

我想从a.txt复制origin/master并将其另存为具有提供的文件路径的新文件,例如/tmp/a.master.txt

我知道我可以git checkout origin/master,手动进行复制,然后签出另一个分支。但是我可以使用一些git magic吗?理想情况下,我希望能够使用可能已提交或未提交的a.txt的当前状态,并且使用git stash似乎太冒险了。

2 个答案:

答案 0 :(得分:2)

您可以使用git cat-file blob获取文件的特定版本。例如,您可以运行git cat-file blob origin/master:a.txt >/tmp/a.master.txt来检出a.txt修订版中的origin/master版本。

您还可以为此指定其他任意复杂的修订表达式,只要它们指向一个Blob。

答案 1 :(得分:1)

您可以使用git show来完成此操作:

git show origin/master:a.txt > saved-a.txt

您可以使用任何分支名称,标记,提交号等代替origin/master