3

たとえば、マスター -> プロダクションからマージする場合、コミットする前にコミットのリストを表示したいと思います。何かのようなもの:

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

4 に答える 4

1

--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 にコミットを任せます。

于 2013-09-02T19:52:01.900 に答える
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で入手できます。

于 2013-09-02T20:03:37.530 に答える