0

バージョン管理としてgitを使用してプロジェクトに取り組んでいます。

私は最初のコミットを行い、レビューのためにそれを gerrit にプッシュしました。

私はさらなる開発を開始し、2 回目のコミットを行い、レビューのために gerrit にもプッシュしました。

これで、最初のコミットでいくつかのマージ競合が発生し、2 回目のコミットでいくつかのフィードバックが得られました。これらの変更を組み込む必要があります。

次の手順に従いました。

  1. git reset --soft Head~1 --> これにより、前の変更への HEAD が取得されました

  2. 解決された競合

  3. Commit1 の新しいパッチセットをアップロードしました (私は使用しましたgit gui- これには [Amend Last Commit] オプションを使用しました)。

  4. Commit2 に組み込まれたフィードバック

  5. Commit2 からすべてのファイルを追加し、新しいコミットを作成しました。今後、Commit2 を修正するオプションはありませんでしたgit gui

この場合、新しいコミットを作成する代わりに以前の Commit2 を修正できるようにするのが理想的です。

PS: これらの変更の間に他の変更がマージされている場合、状況はさらにトリッキーになります。Amend Last Commitが選択されたときに、これらの変更を取得します。

4

1 に答える 1

0

連鎖したレビューのリストがある場合、gerrit の操作は問題になる可能性があります。この状況では、私は次のことをする傾向があります。

  • 最初のコミットの親から新しい (ローカル) ブランチを作成します。
  • Gerrit から自分のローカル ブランチへの最初のコミットをチェリー ピックし、次のコマンドを使用して修正します。git commit --amend
  • ここで、最初のコミットの修正バージョンの上にある 2 番目のコミットを選択します
  • 作成する競合を解決する
  • を使用してレビューからのフィードバックを解決するgit commit --amend
  • 次に、両方のコミットをプッシュアップしますgit push origin <local branch>:refs/for/<remote branch>

変更のチェリーピック URL を Gerrit GUI から直接取得できます。これにより、コミット メッセージに変更 ID が保持されるため、レビューごとに新しいパッチセットを取得するだけで、それらは連鎖したままになります。

Git GUI アプリは、リポジトリとその履歴を探索する便利な方法です。しかし、それらは git コマンドラインの全機能を実際に公開することは決してありません。

于 2015-01-12T16:46:01.503 に答える