SUN CREO

SUN CREO

Blog

Gitコマンド

Tech2025/04/29

基本操作

新しい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

直接 HEADmain にプッシュする

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