2013-08-30 40 views
30

gitのベストプラクティスとして、頻繁にコミットする必要がありますが、複数のコミットからなるパッチを一度にレビューする必要があるかもしれません。複数のコミットをレビューし、一度にマージまたは拒否できる方法はありますか?Gerrit:複数のコミットを1つの "変更"にまとめる

答えて

13

いいえ、Gerritは現在、1つのレビューにバッチコミットをサポートしていません。しかし、いくつかのオプションがあります。

私のチームは、$ DAYJOBで大きな変更を行うために機能ブランチを使用しています。小さなコミットは、機能ブランチに個別にレビュー/マージされますが、機能ブランチは、すべてが適切な場所にあり、すべての開発者が満足すれば統合されます。

また、関連するコミットをグループ化する便利な方法であるトピックブランチもサポートしています。それらについては、documentationで簡単に説明します。これらのコミットは、個別にレビュー/マージする必要がありますが、Web UIですばやくグループ化できます。

22

あなたは、一時的なブランチにスカッシュをマージしてから、その変更をレビューのために投稿することができます。

git checkout -b feature 
git commit -m "start feature" 
... 
git commit -m "finish feature" 
git checkout -b feature-review master 
git merge --squash feature 
git commit 

今すぐあなたのfeature-reviewブランチがfeaturemasterに同じ差分相対が含まれていますがしたが、一つだけにコミットします。

git commit --amend -C HEAD 

をして、その結果としてのレビューのためにプッシュする:あなたは既に投稿レビューリクエストを更新する必要がある場合

+1

ご返信ありがとうございます。しかし、コードを変更した後で、どのようにマスターにプッシュ/マージするのですか? – Nonos

+0

あなたはどんなブランチ( 'feature'か' feature-review')で作業し続け、それが終わったらそれを押すことができます。履歴についてどれだけ気にしてコミットを破棄するかに応じて、最終的なコミットをマスターするためにスカッシュマージを行うプロセスを繰り返すこともできます。 –

+5

'git merge --squash'は履歴を書き直して、機能上で' git bisect'を使用することを許可しません。 – summerbulb

0

あなたがコミットを修正活用することができます。

私は、パブリックコミットはアトミックであり、貢献したい機能の完全な束を含んでいると信じています。通常は、すべての中間コミットを共有したくありません。だから、レビューの前にコミットを押しつぶすことは良い考えです。

+0

考え方の1つは、小さな原子コミットのシーケンスとして破壊的な変更を行うことが最善だと言います。これらの小さなコミットを維持することで、あなたがしたこと、なぜリバースを行うのが容易か、二分法の有用性を高め、レビューをより簡単かつ迅速に行うことができます(例えば、データファイルをソートして1行追加した場合、小さなコミットメッセージは、何が起こったのか、そしてなぜそれが起こったのかを非常に明確にします。Squashingは、並べ替えの大きな違いが挿入を不明瞭にすることを意味します。)このアイデアは、 –

関連する問題