Skip to content

Git基本操作

クローン(リモートからコピーを作る)

git clone git@server:/path/to/repo.git

実行後、repo というフォルダが作成され、その中にリポジトリの内容がコピーされます


既存のブランチを見る

git branch # ローカルのブランチ
git branch -r # リモートのブランチ

既存のリモートブランチに切り替える場合

git checkout -b your-branch-name origin/your-branch-name


変更を確認

git status

ステージに追加(追跡対象に)

git add main.cpp # 個別に追加
git add . # 全部まとめて追加

コミット(ローカル履歴に記録)

git commit -m "機能追加: メイン処理を実装"


最新の情報だけ反映(安全)

git fetch --prune --tags

--prune:リモートで削除されたブランチの追跡ブランチ(例:origin/old-feature)をローカルからも掃除します
--tags:すべてのタグを取得します

git log --oneline --graph --decorate --all


「hogeブランチ が main にマージ済みかどうか」の判定方法
その中に「Merge branch 'feature/hoge'」といったメッセージがあれば、マージ済み

git log main --merges --oneline


「現在いるローカルブランチ」と「origin/main」のファイル差分を表示

git diff origin/main


リモートにプッシュ(アップロード)

git push origin your-branch-name
origin:リモートリポジトリの名前(通常は origin のまま)


上流(upstream)が未設定の場合

The current branch hoge has no upstream branch.

のようなエラーが出る
→ 一度でも上流設定を済ませれば、その後は git push だけでOK

git push -u origin your-branch-name

あるいは

git push -u origin HEAD # 今いるブランチ名を自動で使う


2回目以降

git push # もう -u は不要。普通に通る
git pull --rebase # 追従時

他の人の更新を取り込む(プル)

git pull origin your-branch-name

マージ

例: feature ブランチを main に取り込む(featureが消えてmainが残る)
git checkout main
git merge feature


※リモートの最新状態を知りたいなら、まず git fetch が必要

git fetch

リモートの最新状況を取得してローカルに記録するだけ(作業中ブランチは一切触らない)
リモート追跡ブランチ(例:origin/main, origin/feature/hoge)が更新される
ワーキングツリー/現在のブランチは変化なし
安全に「最新を観察」できる

git pull

= git fetch + 現在のブランチを更新(マージ or リベース)
デフォルトは fetch後に「マージ」
設定しだいで fetch後に「リベース」 へ変更可能
作業中のブランチに変更が入りうる(コンフリクトも起きうる)
git pull は「現在のブランチ」しか更新しない

まとめ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# 1. 最新のリモート情報を取る
git fetch --prune --tags

# 2. main を最新化
git switch main
git pull --rebase   # main を origin/main に追従

# 3. 再び hoge ブランチに戻る
git switch feature/hoge

# 4. main の最新を取り込む(リベース推奨)
git rebase main
# or マージする場合は: git merge main

# 5. リモートに更新を反映
git push --force-with-lease   # rebase したなら必須
# or
git push                      # merge したならこれでOK