gitのベストプラクティスとして、頻繁にコミットする必要がありますが、複数のコミットからなるパッチを一度にレビューする必要があるかもしれません。複数のコミットをレビューし、一度にマージまたは拒否できる方法はありますか?Gerrit:複数のコミットを1つの "変更"にまとめる
答えて
いいえ、Gerritは現在、1つのレビューにバッチコミットをサポートしていません。しかし、いくつかのオプションがあります。
私のチームは、$ DAYJOBで大きな変更を行うために機能ブランチを使用しています。小さなコミットは、機能ブランチに個別にレビュー/マージされますが、機能ブランチは、すべてが適切な場所にあり、すべての開発者が満足すれば統合されます。
また、関連するコミットをグループ化する便利な方法であるトピックブランチもサポートしています。それらについては、documentationで簡単に説明します。これらのコミットは、個別にレビュー/マージする必要がありますが、Web UIですばやくグループ化できます。
あなたは、一時的なブランチにスカッシュをマージしてから、その変更をレビューのために投稿することができます。
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
ブランチがfeature
とmaster
に同じ差分相対が含まれていますがしたが、一つだけにコミットします。
git commit --amend -C HEAD
をして、その結果としてのレビューのためにプッシュする:あなたは既に投稿レビューリクエストを更新する必要がある場合
あなたがコミットを修正活用することができます。
私は、パブリックコミットはアトミックであり、貢献したい機能の完全な束を含んでいると信じています。通常は、すべての中間コミットを共有したくありません。だから、レビューの前にコミットを押しつぶすことは良い考えです。
考え方の1つは、小さな原子コミットのシーケンスとして破壊的な変更を行うことが最善だと言います。これらの小さなコミットを維持することで、あなたがしたこと、なぜリバースを行うのが容易か、二分法の有用性を高め、レビューをより簡単かつ迅速に行うことができます(例えば、データファイルをソートして1行追加した場合、小さなコミットメッセージは、何が起こったのか、そしてなぜそれが起こったのかを非常に明確にします。Squashingは、並べ替えの大きな違いが挿入を不明瞭にすることを意味します。)このアイデアは、 –
ご返信ありがとうございます。しかし、コードを変更した後で、どのようにマスターにプッシュ/マージするのですか? – Nonos
あなたはどんなブランチ( 'feature'か' feature-review')で作業し続け、それが終わったらそれを押すことができます。履歴についてどれだけ気にしてコミットを破棄するかに応じて、最終的なコミットをマスターするためにスカッシュマージを行うプロセスを繰り返すこともできます。 –
'git merge --squash'は履歴を書き直して、機能上で' git bisect'を使用することを許可しません。 – summerbulb