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:mainHEAD: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