有时候我没有意识到我在git的master
分支上并且没有意识到它,当我想将它提交到另一个分支时,我最终会提交一些东西,{{1} }。
在这种情况下我一直在做的只是将文件复制到其他地方,checkout dev
,复制文件并提交。
我确信有更好的方法可以做到这一点不存在吗?
dev
分支无论如何都将合并为主。我可以在开发分支上dev
吗?当我在master上git merge master
时,有些分支特定的更改似乎没有合并。如果我将git merge dev
合并到master
?
答案 0 :(得分:2)
git cherry-pick
正是您要找的。 p>
说,您承诺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