例如,当我从master合并时 - >生产,我想在我之前看到提交列表,错误,承诺给他们。类似的东西:
$ git merge --doublecheck master
Commits to merge:
1292642 fix foo
3c0f30b cleanup bar
Do you want to proceed? (y/n)
答案 0 :(得分:4)
您可以使用修订范围双点..
语法来执行此操作:
git log --oneline --graph <branch-to-merge-into>..<branch-to-be-merged>
输出将是<branch-to-be-merged>
中不在<branch-to-merge-into>
内的所有提交。
您可以在Commit Ranges的FREE 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-option和git 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)
获取