LoginSignup
0
0

More than 3 years have passed since last update.

Git/Gerritで二つのコミットをまとめる

Last updated at Posted at 2019-10-01

目的

  • 二つのコミットを一つにまとめる方法を書く。
  • 1回のコミットにしたかったが間違えて2つに分けてしまい、2つ目のコミットを間違えた場所からしてしまった時の対処法を書く。

前提条件

  • pushを行い現在レビュー中にRebaseを行った二つのコミット(AコミットとBコミット)をまとめる時を想定する。
  • 最初に行ったコミットをAコミットとし、Aコミットで修正したファイルをAファイルとする。
  • 後に行ったコミットをBコミットとし、Bコミットで修正したファイルをBファイルとする。
  • Aコミットのpush環境は残っておらず、現在はBコミットの環境のみがローカルに存在するものとする。

実施詳細

※確認コマンド実行の合間にコマンド$ git logを実行すると良い

  1. fetchでレビュー中の情報を取得する
    1. Bコミットの環境にfetchでレビュー中のAコミットの環境を得る。
    2. コマンド$ git fetch gerritを実行したがレビュー中に実施したRebaseの情報までは取得できなかった。(コミットIDを指定してcheckoutしようとしてもfatalと言われた→rebaseを行ったため、その情報がGerrit上にはあるがローカルになかったため怒られた)
    3. 下記コマンドを実行しAコミットのレビュー中の内容までの情報を取得した。(rebaseの情報も取得できた) $ git fetch gerrit refs/changes/変更番号下2桁/追跡番号/Aコミットのpatch setの番号
  2. fetchした情報をもとにcheckoutをしてレビュー中のファイルAを取得
    1. コマンド$ git checkout AコミットのコミットIDを実行しコミットIDに結びついたファイルを取得した。
    2. 下記コマンドを実行してBコミットのファイルを取得した。
  $ git cherry-pick -n BコミットのコミットID
  1. 取得したファイルをステージングする。
    1. 下記コマンドを実行した。
  $ git add .
  1. 追加したBコミットのファイルを含めてコミットをした。
    1. 下記コマンドを実行した。
  $ git commit --amend
  1. リモートにpushを行う。
    1. 下記コマンドを実行した。
  $ git push gerrit HEAD:refs/for/ブランチ名
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0