Open15

git コマンド備忘録

HidenoriHidenori

2つのブランチ間のコミット単位の差分を確認する

マージ先ブランチ名を master、マージ元をbranchとすると、以下のコマンドでbranchブランチにはあって、masterブランチにはないコミットの一覧を表示できます。

$ git log --oneline --no-merges master..branch

https://qiita.com/ikenji/items/fecd39966bbf463da3f4

HidenoriHidenori

gerrit で一度レビューに出した後に修正する

$ git commit -a --amend
$ git push origin HEAD:refs/for/${target-branch-name}
HidenoriHidenori

異なるブランチ(根が共通ではない)をマージするとき、通常はエラーになる。

$ git merge <マージ元ブランチ>
fatal: refusing to merge unrelated histories

この場合は --allow-unrelated-historiesを付ける

HidenoriHidenori

リモートのブランチを後からローカルにチェックアウト

$ git fetch origin <remote-branch-name>
HidenoriHidenori

別リポジトリの指定ブランチ同士の差分を確認する

fork元のリポジトリの特定のブランチと、fork先のリポジトリの特定のブランチを比較したい場合など

$ git remote add <適当なリポジトリ名> <リポジトリのURL.git>
$ git fetch <先ほど追加したリポジトリ名>
$ git log --oneline --no-merges <現在のブランチ名>..<先ほど追加したリポジトリ名>/<比較対象のブランチ名>

https://offlo.in/blog/fork-2git.html

HidenoriHidenori

gerrt でレビュー中のものをリベースする

1. GerritのCLをローカルに取得する

以下のように、Web画面の操作で取得できるコマンドをそのまま利用する

https://budougumi0617.github.io/2021/01/31/pull_cl_from_gerrit/

2. リベース作業

$ git rebase origin/<リベース元のブランチ名>

# もしコンフリクトがなければここで終了。コンフリクトがあれば解消してから以下を実行

$ git add .
$ git rebase --continue

3. push

$ git push origin HEAD:refs/for/<プッシュ先のブランチ名>
HidenoriHidenori

git lfs で指定したディレクトリ以下のファイル全てを対象にする

$ git lfs track "<path_to_target_directory>/**"
HidenoriHidenori

既存のタグ&リリースを更新(cherry-pick)する

# ローカルのタグを削除
$ git tag -d <タグ名>
$ git push origin :refs/tags/<タグ名>

$ git cherry-pick <該当の変更のSHA>

# タグを設定
$ git tag <タグ名>
$ git push --tags origin