たとえば、マスター -> プロダクションからマージする場合、コミットする前にコミットのリストを表示したいと思います。何かのようなもの:
$ git merge --doublecheck master
Commits to merge:
1292642 fix foo
3c0f30b cleanup bar
Do you want to proceed? (y/n)
たとえば、マスター -> プロダクションからマージする場合、コミットする前にコミットのリストを表示したいと思います。何かのようなもの:
$ git merge --doublecheck master
Commits to merge:
1292642 fix foo
3c0f30b cleanup bar
Do you want to proceed? (y/n)
--no-commit
および--no-ff
フラグを使用して、Git が自動的にコミットするのを防ぐことができます。
git merge master --no-commit --no-ff
現在のブランチとマスターが分岐している場合は、それで--no-commit
十分です。master が単に 2、3 リビジョン先の場合、Git は自動的に早送りします。この場合、実際にはコミットはありません。は--no-ff
、この自動早送りを防ぎます。
これを行うと、マージの結果として生じる変更は保留状態になり、コミットされません。この状態で差分を取るのは簡単なので、コードレビューを行うときにこれを行います。これを頻繁に行う場合は、 でエイリアスを作成すると実用的~/.gitconfig
です。次に例を示します。
rev = merge --no-ff --no-commit
最後に、マージされたリビジョンのすべてのコミット ログの要約として適切なコミット ログが生成されるため、リセットして Git にコミットを任せます。
ここでいくつかの提案を取り入れて、小さなスクリプトを書きました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)