3

私たちは Git を学んでおり、ホスティング サイトとして GitHub を使用しています。

upstream私たちは皆、レポをフォークし、コミットを PRupstreamして変更を取り込みます。

アップストリームのコミット履歴をきれいに保つために、コミットをつぶす方法を学ぼうとしています。

私たちは頻繁にコミットします:)

つまり...プルリクエストを送信すると..その後、プロジェクトメンテナーがコミットにコメントを追加します(つまり、PRのコードレビューを行う)...開発者は問題を修正してプッシュアップします再びコミットします。

これらのコミットをつぶして、PR のコミットが 1 つだけになるようにすることはできますか? GH のコメント (この PR に反対) はどうなりますか?

4

2 に答える 2

0

コミットをまとめてつぶすには:

git rebase -i upstream/master

-iインタラクティブ モードをアクティブにし、コミットごとに親と一緒に圧縮するか ("fixup" と呼ばれます)、コミット メッセージを編集するか ("reword" と呼ばれます)、またはコミットでファイルを追加/削除/更新したい (「編集」と呼ばれる)。

リベースが完了したら、強制的にプッシュする必要があります。

git push -f

ただし、これは PR に関するレビュアーのコメントを破壊すると思います。

于 2015-11-07T02:34:48.120 に答える
0

する必要がありますgit push --force( rebase squash localの後: 最初のコミットを選択し、他のコミットに「s」マーカーを付けます)。

ただし、PR は引き続き有効です。それに関連付けられた履歴は、プッシュされたばかりの履歴で更新されます (ここでは 1 つの押しつぶされたコミット)

これらのコマンドを実行するのは誰ですか? PR/追加のコミットを提出した人? それともレビュアー?

フォーク プッシュの所有者は、必要な回数だけプッシュします。コメントは破棄されず、実際には押しつぶされたコミットの一部になります。
以前に PR の一部であったコミットは「廃止」としてマークされ、プッシュしたばかりの新しいコミットに置き換えられます。
その後、メンテナーは押しつぶされた履歴をマージできるようになります。

于 2015-11-07T02:32:54.030 に答える