git cherry-pick 和 git log

直接使用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>,则默认为当前分支。