在git中在分支之间迁移单个文件的简单方法?

时间:2012-03-20 20:42:31

标签: git

有时候我没有意识到我在git的master分支上并且没有意识到它,当我想将它提交到另一个分支时,我最终会提交一些东西,{{1} }。

在这种情况下我一直在做的只是将文件复制到其他地方,checkout dev,复制文件并提交。

我确信有更好的方法可以做到这一点不存在吗?

dev分支无论如何都将合并为主。我可以在开发分支上dev吗?当我在master上git merge master时,有些分支特定的更改似乎没有合并。如果我将git merge dev合并到master

,这些更改是否会搞砸了?

3 个答案:

答案 0 :(得分:2)

git cherry-pick正是您要找的。

说,您承诺master修订版A,并希望A代替dev

git checkout dev
git cherry-pick A

完成。现在,A位于dev

我们仍然需要摆脱A中的master。如果A是你做的最后一次提交,那么这个提示会有所帮助:

git checkout master
git reset --hard HEAD~

如果自A以来还有更多提交,您可以git rebase A~然后删除A或者 - 如果您推送到其他地方 - 只需git revert A

答案 1 :(得分:0)

或者,您可以使用

git checkout branch_name file_name

This article概述了使用此模式优于git cherry-pick(在某些情况下)的优势。

编辑:另外,我建议displaying your current git branch name in your bash prompt帮助避免您提到的那种混淆。

答案 2 :(得分:0)

将master合并到dev是一个非常常见的工作流程。但是如果你不想合并并且仍然想要复制东西,你只需要检查dev分支,你就可以使用git来检出文件:

git checkout master -- path/to/file