cheetsheet/git
オプション
| 説明 | コマンド |
|---|---|
| mainブランチとの差分をマージ | git fetch origin && git merge origin/master |
| 現在の変更をスタッシュに保存 | 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 checkout HEAD – [ファイル名] |
| 直近のログ、1個を確認 | git -p -1 |
| 直前のコミットとその前のコミットとの間の差分を見たい | git diff HEAD~1 HEAD |
.gitignore
| 例 | 効果 |
|---|---|
| *.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」ボタンをクリックするまで、マージされません。
レビュー前にプルリクのコミットをまとめたい
- git log で「現在のコミットを含めて何件のコミットをまとめるか確認」する
- 例えば3コミットをまとめる
数字で指定
git rebase -i HEAD~3
~の回数で指定( ~ が3つある )
git rebase -i HEAD~~~
まとめたい( squash )
上記の git rebase HEAD~~~ すると現在から遡ったコミットが列挙される
- pick とある部分を s or squashと書き直して保存
- コミットの文章を編集して保存
- まとめたコミットを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 |