Git有一个选项可以在执行合并之前显示将要合并的提交吗?

3
例如,当我从主分支合并到生产分支时,我希望在提交之前能够查看一下提交列表。大概像这样:
$ git merge --doublecheck master
Commits to merge:
1292642 fix foo
3c0f30b cleanup bar
Do you want to proceed? (y/n)

1
git help rev-list "git帮助rev-list" (http://git-scm.com/docs/git-rev-list) - Josh Lee
4个回答

4
你可以使用修订范围双点 .. 语法来实现此目的:
git log --oneline --graph <branch-to-merge-into>..<branch-to-be-merged>

输出结果将是在<branch-to-merge-into>中不存在的<branch-to-be-merged>中的所有提交。
您可以在免费在线Pro Git书籍提交范围部分了解更多关于此及其他修订范围语法的信息。

1
如果当前分支是主分支,您可以省略左侧。在这种情况下,使用git log ..master即可。 - Josh Lee
你可以创建一个Git别名来脚本化你想要的行为。 - kan

1
你可以使用--no-commit--no-ff标志来防止Git自动提交:
git merge master --no-commit --no-ff

如果当前分支与主分支有差异,那么--no-commit就足够了。如果主分支只是领先几个修订版本,那么Git会自动快进,并且在这种情况下不会真正提交。 --no-ff可以防止此自动快进。
如果您这样做,则合并产生的更改将处于挂起状态,未提交。在进行代码审查时,我会这样做,因为在此状态下很容易进行差异比较。如果您经常这样做,最好在~/.gitconfig中创建别名,例如:
rev = merge --no-ff --no-commit

最终,我选择重置并让Git进行提交,因为它会生成一个漂亮的提交日志,作为合并修订版本的所有提交日志的摘要。

虽然这显示了合并的结果,但它没有显示正在合并哪些提交,这正是原帖作者所要求的。 - user456814

0
我采纳了这里的一些建议并编写了一个小脚本,git-safemerge
 $ git safemerge master
 Commits:
  * bc911ef Fix bug in widget
  * e80f8d1 Clean things up

 Changes:
  foo.py   |  12 ++--
  bar.py   |  35 +++++-----
  2 files changed, 47 insertions(+), 47 deletions(-)

 Fast-forward: not possible

 Continue merging master into prod? (y/n)

可以在这里找到:https://gist.github.com/wolever/6416735


0

虽然这显示了合并的结果,但它没有显示正在合并哪些提交,这正是原帖作者所要求的。 - user456814

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接