直接使用git命令有时比用图形化界面工具(如gitk,gui,smartgit等工具)效率高多了。比如我工作时处理的代码很庞大,用smartgit执行cherry-pick操作有时需要大于5分钟甚至根本无法响应,而直接在命令行执行命令进行操作几乎可以瞬间完成,节省了时间,提高了工作效率。
什么时候用cherry-pick?当你想把另一个分支的某个或者某些commit重新提交到当前分支的时候可以用这个命令,具体写法如下:
只cherry-pick一条commit:git cherry-pick <commit-id>
例如:git cherry-pick 390aae9
(实际的commit-id较长,这里简写)
连续cherry-pick多条commit:git cherry-pick <start-commit-id>..<end-commit-id>
例如:git cherry-pick 390aae9..03179d9
注意:这里是左开右闭区间(390aae9..03179d9],也就是说390aae9
这条commit不会被提交到当前分支。
如果想要闭区间需用:git cherry-pick <start-commit-id>^..<end-commit-id>
例如:git cherry-pick 390aae9^..03179d9
这样就390aae9就会被提交了。
那这个commit-id怎么获取?用git log,然后可以看到每条commit对应的id。
获取指定分支的log:git log <branch-name>
获取指定分支并且commit信息包含XXX的字样的log:git log <branch-name> --grep XXX
如果不加 <branch-name>
,则默认为当前分支。