在执行合并之前,git是否可以选择显示要合并的提交?

时间:2013-09-02 19:07:01

标签: git

例如,当我从master合并时 - >生产,我想在我之前看到提交列表,错误,承诺给他们。类似的东西:

$ git merge --doublecheck master
Commits to merge:
1292642 fix foo
3c0f30b cleanup bar
Do you want to proceed? (y/n)

4 个答案:

答案 0 :(得分:4)

您可以使用修订范围双点..语法来执行此操作:

git log --oneline --graph <branch-to-merge-into>..<branch-to-be-merged>

输出将是<branch-to-be-merged>中不在<branch-to-merge-into>内的所有提交。

您可以在Commit RangesFREE online Pro Git book部分详细了解此修订范围和其他修订范围语法。

答案 1 :(得分:1)

您可以阻止Git自动提交--no-commit--no-ff标记:

git merge master --no-commit --no-ff

如果当前分支和主分支已经分歧,那么--no-commit就足够了。如果master只是前面几个版本,那么Git将自动快进,并且在这种情况下确实没有提交。 --no-ff会阻止此自动快进。

如果执行此操作,则合并产生的更改将处于挂起状态,而不是已提交。我在进行代码评审时这样做,因为在这种状态下很容易区分。如果您经常这样做,可以在~/.gitconfig中为其创建别名,例如:

rev = merge --no-ff --no-commit

最后,我重置并让Git做提交,因为它生成一个很好的提交日志作为合并修订的所有提交日志的摘要。

答案 2 :(得分:0)

另一种方法是使用--no-commit和 - no-ff选项(类似于git commit --dry-run选项),这样您就可以看到实际结果。请参见merge(1)手册页的“示例”部分。

另请参阅SO/is-there-a-git-merge-dry-run-optiongit merge without auto commit

答案 3 :(得分: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

获取