是否有快速方法将文件(版本)从当前分支注入另一个分支?
目前,我将文件从branchX复制到非git位置,而不是切换到branchY,并将其从我保存的非git位置复制到那里。但这看起来像是太多的手动步骤。
答案 0 :(得分:1)
您可以cherry-pick将branchX中的文件添加到branchY的提交:
git checkout branchY
git cherry-pick <sha1>
如果您在同一次提交中进行了其他更改,则它们也将被复制到当前分支。
答案 1 :(得分:1)
仅复制文件(没有其他更改或提交历史记录):
git checkout branchY
git checkout branchX -- /path/to/file
答案 2 :(得分:1)
采摘整个提交通常是获取“提交文件”的正确方法(因为通常您还需要对同一提交中的其他文件进行任何更改)。
但问题的直接答案是,您可以查看甚至签出特定提交中的特定文件:
git show <commit-ID>:<path> # see the file
git checkout <commit-ID> -- <path> # bring it here
<commit-ID>
部分可以是解析为提交SHA-1(甚至是树SHA-1)的任何内容,例如branchX
之类的分支名称,相对历史版本(“什么这个文件看起来好像是三个提交的吗?啊,我知道怎么看:git show HEAD~3:path/to/file.txt
),或者当然是一个原始的SHA-1。
show
和checkout
之间的区别在于show
只是查看内容(将其打印到标准输出),而这种形式为checkout
, -- <path>
参数,通过索引写入文件(因此它将在下次签入时提交),然后进入工作目录。
“涂抹过滤器”也有一些细微之处(show
跳过它们而checkout
使用它们),但除非你使用涂抹过滤器,否则这可能不会影响你。 / p>
请注意,<path>
通常取自存储库的顶部;如果您在子目录中,可以git show HEAD~3:./file.txt
避免记住/输入子目录的确切路径。