TES Blog

株式会社テクニカルエンジニアリングサポートに所属する社員が、自身が携わるテクノロジーやイベントに関する情報を発信しています。

Gitコマンドあれこれ

個人的に忘れっぽいコマンドとか、あまり普段使わないようなコマンドを備忘録として載せます。

git rebaseの使い方

コンフリクト解消した後どうするんだっけ…ってたまになる。

1.マスターを最新化する

git checkout master
git pull

2.トピックブランチにリベースする

git checkout {{ トピックブランチ名 }}
git rebase master

3.リベースした時にコンフリクトが発生時

# コンフリクトを解消
git add .
git rebase --continue

4.コンフリクト解消後すでにリモートにpushしてある時

# リベースコンテニュー後に下記を実行
git push -f origin {{ リモートブランチ名 }}

※force pushなので気をつけること

Git Stashの使い方(編集内容一時退避)

編集内容を退避させる

git stash save

※saveは省略可能

退避した内容の復活と、復活させたstash内容の削除を同時に行う

git stash pop stash@{0}

※最新の退避内容を復活&削除したい場合は stash@{0} が不要

複数行のコミットコメントを行う

git commit -F- <<EOM
> コミットコメント要約
>
> コミットコメント詳細
> 詳細あれこれ
> EOM

対象ブランチ間同士の差分系

こんなに差分取ることなんて早々ない。

差分のあるファイルを対象に、ファイル名だけを取得

git diff {{ ブランチ名1 }} {{ ブランチ名2 }}  --name-only

差分の種類を取得(追加・更新・削除など)

git diff --name-status {{ ブランチ名1 }} {{ ブランチ名2 }}

git logの表示形式で差分を取得

git log -p {{ ブランチ名1 }}...{{ ブランチ名2 }}

コミットハッシュ値とコミットコメントのみの差分を取得

git log --pretty=format:"%H %s" {{ ブランチ名1 }}...{{ ブランチ名2 }}

ソースレベルでブランチ同士の差分を取得

git diff {{ ブランチ名1 }} {{ ブランチ名2 }}

空コミットを行ってPRを作成する

プルリク駆動で便利!

1.--allow-emptyで空のコミットを作成

git commit --allow-empty -m "PR作成用空コミット"

2.通常どおりpushする

3.空コミットでpushされたブランチでPRを作成

4.その後、コミットしたい部分をaddする

5.次に変更を行った部分をコミットする場合、--amendで空コミットを上書き

git commit --amend -v

6.force pushで空コミットしたブランチに対応した内容を反映させる

git push -f origin {{ リモートブランチ名 }}

※force pushなので気をつけること

指定ファイルをgitの追跡対象から外す

1.除外する

git update-index --assume-unchanged {{ ファイルパス }}

2.除外を解除する

git update-index --no-assume-unchanged {{ ファイルパス }}

3.除外しているファイルを確認する

git ls-files -v | grep ^h

直前のコミット取り消し

コミットの取り消しとワークディレクトリの編集内容も削除

git reset --hard HEAD^

ワークディレクトリの内容はそのままでコミットだけ取り消し

git reset --soft HEAD^

※ステージングに上げた状態(addした状態)になる

そこからadd状態を取り消すなら

git reset

cherry-pickの使い方

コミット単位でcherry-pick

単一のコミット内容のみ反映する。

git cherry-pick 1 {{ コミット番号 }}

マージコミット単位でcherry-pick

-m オプションを使用する。

git cherry-pick -m 1 {{ マージコミット番号 }}

マージ単位となるので、例えば一つのPRに複数件のコミットがある場合は、すべてのコミット内容が反映対象になります。