Blog
Gitコマンド
基本操作
新しいGitリポジトリを初期化
git init
ステージにファイルを追加
git add .
コミット
git commit -m "メッセージ"
現在の状態の確認(変更点、ステージ済み/未ステージ)
git status
ファイルの差分を確認(作業ツリー vs ステージ)
git diff
メインで使うアカウントを設定する(グローバル設定)
git config --global user.name "test"
git config --global user.email "test@example.com"
# 確認
cat ~/.gitconfig
サブで使うアカウントを設定する(リポジトリごとの設定)
git config user.name "test2"
git config user.email "test2@example.com"
# 確認
cat .git/config
リモート
git remote -v
リモートリポジトリを削除
git remote remove origin
リモートリポジトリを追加
git remote add origin <URL>
ローカルのブランチをリモートにプッシュ(初回)
# -u は --set-upstream 「ここを起点に push/pull しますよ」
git push -u origin <ブランチ名>
リモートの変更をローカルに取り込む
git pull origin <ブランチ名>
リモートリポジトリをローカルに複製
git clone <URL>
ブランチ操作
ブランチ一覧を表示
git branch
指定したブランチに切り替え
git checkout <ブランチ名>
ブランチを作成して切り替え
git checkout -b <新ブランチ名>
# feature/ui などで階層にできる
ブランチ削除(マージ済みの場合)
git branch -d ブランチ名
強制削除(マージしていなくても削除)
git branch -D ブランチ名
履歴操作・復元
コミット履歴を表示(--oneline --graph で視覚的に)
git log
git log --oneline --graph
コミットを取り消してステージに戻す
git reset --soft HEAD~1
コミット・ステージもすべて取り消す
git reset --hard HEAD~1
取り消す前のmainブランチの状態を[rollback-point]という名前のリモートブランチにプッシュして残す
git push origin main:rollback-point
直接 HEAD
を main
にプッシュする
git push --force origin HEAD:main
HEAD:main
ローカルの現在のHEAD
(detached の状態)を、リモートのmain
ブランチに書き込む--force
/-f
をつけることで、リモートの履歴を上書き
過去の状態に切り替え(detached HEAD)
git checkout <コミットID>
特定の過去の状態からブランチを作成
git checkout -b <新ブランチ> <コミットID>
マージと競合
現在のブランチに別ブランチの変更を取り込む
git merge <ブランチ名>
コンフリクト時
ファイルを手動修正 → `git add` → `git commit`
ケース別
リモート(フォーク元)のリポジトリからマージする方法
# フォーク元をリモートとして追加
git remote add upstream https://github.com/<>.git
# フォーク元の変更をフェッチ
git fetch upstream
# フォーク元の変更を自分のブランチにマージする
git merge upstream/main
# または、フォーク元のログを確認して、チェリーピックしたいコミットハッシュを取得
git log upstream/main
# 特定のコミットをチェリーピック
git cherry-pick abc1234
git cherry-pick abc1234 def5678
# マージ結果を確認
git status
# 自分のGithubリポジトリにプッシュ
git push origin main
リモートからクローンし、別の新規リポジトリにプッシュする
git remote get-url origin
git remote remove origin
git remote add origin https://github.com/<>.git
git branch --set-upstream-to=origin/main
git push origin main
git merge origin/main --allow-unrelated-histories