cheatsheet/git

オプション

説明コマンド
mainブランチとの差分をマージgit fetch origin && git merge origin/main
現在の変更をスタッシュに保存git stash
スタッシュされた変更のリストを表示git stash list
最後にスタッシュした変更を再適用git stash apply
スタッシュした変更を削除git stash drop
git addしたステージングしたファイルのリストを解除git reset
ローカルにcommitしたが編集状態に戻したいgit reset –mixed HEAD^
最後にコミットした状態に戻す(編集内容は消える)git reset –hard HEAD
編集内容を消すgit restore [ファイル名]
直近のログ、1個を確認git -p -1
直前のコミットとその前のコミットとの間の差分を見たいgit diff HEAD~1 HEAD

.gitignore

git reset --hard は未コミットの編集内容を破棄するため、実行前に git status で対象を確認する。

効果
*.log全てのログファイルを無視
tmp/tmpディレクトリを無視

外部レポジトリへのプルリクがマージされた後、自分のレポジトリを最新の状態にする

Upstreamリポジトリを追加(最初に1回だけ)

git remote add upstream [元のリポジトリのURL]

最新の状態をフェッチ

git fetch upstream

自分のローカルのmainブランチに切り替え

git checkout main

Upstreamのmainブランチをマージ

git merge upstream/main

自分のフォークしたリポジトリにプッシュ

git push origin main

レポジトリによってメールアドレスを変える

まずはデフォルトを設定

git config --global user.name "ユーザー名"
git config --global user.email メールアドレス

アドレスを変えたいレポジトリに移動してから

git config --local user.name "ユーザー名"
git config --local user.email メールアドレス

リモートのブランチをチェックアウトしたい

ローカルにはない( git branch だと見えない )が、リモートに存在するブランチで作業したい場合

git fetchgit
git branch -r
git checkout -b <ローカルブランチ名> origin/<リモートブランチ名>

ローカルを最新にしたい

1. リモートの作業ブランチ(例: origin/feature/foo)を最新に

git pull --rebase origin $(git rev-parse --abbrev-ref HEAD)

2. main(または develop)ブランチの最新も取り込みたい

git pull --rebase origin main

プルリクを作る

作業した事がないレポジトリ

git clone your-repository-url
cd repogitory-name
git checkout -b feature-x

作業した事がある(別のブランチにいる)

git fetch origin && git switch main && git pull --rebase origin main && git log

ログ確認後、下記を行い、作業用ブランチの作成

git checkout -b feature-x
プレフィックス意味用途例
feat:Feature(機能追加)新しいAPIを追加、新機能を実装
fix:Bug Fix(バグ修正)ログインバグ修正、nullチェック追加
refactor:リファクタリング動作は変えずに内部構造を整理
docs:ドキュメント変更README修正、コード内コメント追加
style:コードのスタイル修正フォーマッタ修正、インデント、空白など
test:テスト関連単体テスト追加・修正
chore:雑務(ビルド、CI設定、依存更新など)CI設定変更、npmパッケージ更新
perf:パフォーマンス改善高速化、メモリ効率改善
build:ビルドシステム変更webpack や make の設定変更など
ci:CI/CD関連GitHub ActionsやCircleCIの修正
revert:変更の取り消しrevert: feat: add search bar
merge:マージ用(あまり使われないが手動でマージ時などに)merge: feature/login
  • ブランチで編集作業
  • git add .
  • git commit -m “Add feature x”
  • GitHubにブランチをプッシュ
    • git push origin feature-x

GitHubのリポジトリページにアクセスし、「Pull requests」タブをクリック。

その後、「New pull request」ボタンをクリックします。

base:ドロップダウンから、プルリクエストをマージしたいブランチ(通常はmainまたはmaster)を選択し、

compare:ドロップダウンから、先ほどプッシュしたブランチ(この例ではfeature-x)を選択します。

プルリクエストを作成する前に、「Create draft pull request」または「Draft」のオプションを選択して、プルリクエストをドラフトとしてマークします。

ドラフトプルリクエストは、レビュー準備が整うまで「Ready for review」ボタンをクリックするまで、マージされません。

レビュー前にプルリクのコミットをまとめたい

  1. git log で「現在のコミットを含めて何件のコミットをまとめるか確認」する
  2. 例えば3コミットをまとめる

数字で指定

git rebase -i HEAD~3

~の回数で指定( ~ が3つある )

git rebase -i HEAD~~~

まとめたい( squash )

上記の git rebase HEAD~~~ すると現在から遡ったコミットが列挙される

  1. pick とある部分を s or squashと書き直して保存
  2. コミットの文章を編集して保存
  3. まとめたコミットをPR向けに用意したブランチにpush
  • 過去の履歴を編集するのでforceが必要になる
git push --force-with-lease origin (git rev-parse --abbrev-ref HEAD)

–force-with-lease だと他の人が同じブランチで作業していないか(ローカルrefとリモートrefを比較、このコミットが最新になるか)をチェックしてくれる

リモートレポジトリ

origin とは別にリモートレポジトリを追加したい場合がある。

コマンド効果
git remote add john http://dev.example.com/john.git追加
git remote -v確認
git push john test-branch_push