将文件从一个分支发送到另一个分支的快速方法

时间:2014-03-04 19:04:03

标签: git

是否有快速方法将文件(版本)从当前分支注入另一个分支?

目前,我将文件从branchX复制到非git位置,而不是切换到branchY,并将其从我保存的非git位置复制到那里。但这看起来像是太多的手动步骤。

3 个答案:

答案 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。

showcheckout之间的区别在于show只是查看内容(将其打印到标准输出),而这种形式为checkout-- <path>参数,通过索引写入文件(因此它将在下次签入时提交),然后进入工作目录。

“涂抹过滤器”也有一些细微之处(show跳过它们而checkout使用它们),但除非你使用涂抹过滤器,否则这可能不会影响你。 / p>

请注意,<path>通常取自存储库的顶部;如果您在子目录中,可以git show HEAD~3:./file.txt避免记住/输入子目录的确切路径。