はじめに
チーム開発や個人のプロジェクトで必須となるGitの操作を、1つの記事にまとめました。
前半では「自分のブランチで作業し、mainの最新を取り込んでからPRを出す」という最も標準的な開発ワークフローを、後半ではファイル名の変更やコミットの取り消しなど、状況に応じた逆引きリファレンスを記載しています。
目次
第1部:基本の開発ワークフロー
- 1.1 リポジトリをクローン(初回のみ)
- 1.2 自分のブランチを作成して移動 (削除や名前変更を含む)
- 1.3 自分のブランチで作業し、コミットする
- 1.4 mainブランチの最新の変更を取り込む (Sync)
- 1.5 自分のブランチをリモートへPush
- 1.6 Pull Requestの作成
第2部:Git操作の逆引きリファレンス
【ファイル・フォルダの操作】
【コミットの取り消し・修正・その他】
- 2.6 コマンドでのコミット取り消し(Push前)
- 2.7 コミット内容の修正(Push後:Revert)
- 2.8 作業の一時避難(Stash)
- 2.9 ログと変更箇所の確認(Log/Show)
- 2.10 不要なファイルの掃除(Clean)
第3部:応用編
第4部:ソロ編
[ソロ開発でよく使う手法]
第1部:基本の開発ワークフロー
自分の作業ブランチ(例: kiyoshi)に、大元となる main ブランチの最新の更新内容を取り込み、その後Pull Request(PR)を作成するまでの一連の流れです。
1-1. リポジトリをクローン(初回のみ)
git clone [リポジトリのURL]
cd [リポジトリ名]
1-2. 自分のブランチを作成して移動-削除や名前変更を含む
# -b オプションをつけることで、作成と移動を同時に行います
git checkout -b kiyoshi
# ローカルブランチを削除したい時は
# git branch -d <branch name>
# ローカルブランチの名前を変更したい時は
# git branch -m kiyoshi hoge
1-3. 自分のブランチで作業し、コミットする
# どのブランチにいるか確認
git status
# もし、他のブランチに居れば実行
git checkout kiyoshi
# 変更した全てのファイルをステージングエリアに追加
git add .
# メッセージをつけてコミット
git commit -m "saving my progress on kiyoshi branch"
1-4. mainブランチの最新の変更を取り込む (Sync)
自分が作業している間にリモートの main ブランチが更新されている場合、その内容を自分のブランチに取り込みます(これをしないと後でPRを出す時にコンフリクトが起きやすくなります)。
# 現在の状態を確認し、トラックされているかを見ます
git status
# リモートの main の変更を引っ張ってきて、自分のブランチにマージします
git pull origin main
** コンフリクト(競合)が発生した場合**
基本的にGitは自動でクリーンマージしてくれますが、同じファイルの同じ行を編集していた場合などは「Merge conflict」と通知されます。
その場合は、該当ファイルを開いて手動で修正し、保存します。その後、以下のコマンドでマージを完了させます。git add [修正したファイル名] git commit -m "Merged main updates into kiyoshi and resolved conflicts"
1-5. 自分のブランチをリモートへPush
# 最初のPushの場合(追跡元を設定)
git push --set-upstream origin kiyoshi
# (省略形: git push -u origin kiyoshi でも可)
# 2回目以降のPushの場合
git push origin kiyoshi
1-6. Pull Requestの作成
GitHub(またはGitLab等)の画面を開くと、プッシュしたブランチに対して「Compare & pull request」というボタンが表示されます。
そこをクリックし、kiyoshi ブランチの変更を main ブランチへマージするためのPull Requestを作成・送信します。
第2部:Git操作の逆引きリファレンス
ファイル構成の変更や、間違えてしまった時の取り消し操作などを状況別にまとめました。
※Push後の変更はチームメンバーに影響を与えるため、履歴を消さずに上書き・打ち消しを行うのが基本です。
2-1. ファイル名の書き換え
Push前
git mv [旧ファイル名] [新ファイル名]
git commit -m "Rename file"
Push後
git mv [旧ファイル名] [新ファイル名]
git commit -m "Rename file and push update"
git push origin [ブランチ名]
2-2. ファイルの移動(別フォルダへ)
Push前
mkdir [フォルダ名] # フォルダがない場合のみ
git mv [ファイル名] [移動先フォルダパス]
git commit -m "Move file to subdirectory"
Push後
git mv [ファイル名] [移動先フォルダパス]
git commit -m "Move file to subdirectory"
git push origin [ブランチ名]
2-3. フォルダ名の変更
Push前
git mv [旧フォルダ名] [新フォルダ名]
git commit -m "Rename directory"
Push後
git mv [旧フォルダ名] [新フォルダ名]
git commit -m "Rename directory"
git push origin [ブランチ名]
2-4. ファイルの削除
Push前
git rm [ファイル名]
git commit -m "Delete file"
Push後
git rm [ファイル名]
git commit -m "Delete file"
git push origin [ブランチ名]
2-5. フォルダの削除
Push前
# -r オプションでフォルダ内を再帰的に削除
git rm -r [フォルダ名]
git commit -m "Delete directory"
Push後
git rm -r [フォルダ名]
git commit -m "Delete directory"
git push origin [ブランチ名]
2-6. コマンドでのコミット取り消し(Push前)
直前のコミットのみを取り消し、ワークツリー(ファイルの中身)はそのまま維持して「Untracked/Staged」状態に戻す操作です。
git reset --soft HEAD~1
2-7. コミット内容の修正(Push後:Revert)
Push済みのコミットを消すとリモートとの不整合が起きるため、**「内容を打ち消す新しいコミット」**を作ります。
git revert [コミットID]
git push origin [ブランチ名]
2-8. 作業の一時避難(Stash)
作業途中に main の修正を取り込みたい時など、現在の変更を一時的に脇に置いておく機能です。
# 一時避難
git stash
# 避難したリストを確認
git stash list
# 作業を戻す
git stash pop
2-9. ログと変更箇所の確認(Log/Show)
# コミット履歴を一行で表示
git log --oneline
# 特定のコミットの変更内容を詳細表示
git show [コミットID]
2-10. 不要なファイルの掃除(Clean)
Git管理されていない(Untracked)ファイルを一括削除します。ログファイルなどが大量に生成された時に便利です。
# 削除されるファイルの確認(実行前に必ずテスト)
git clean -n
# 実際に削除
git clean -f
第3部:応用編
3-1. 特定の1コミットだけを切り出してPRを作成する(cherry-pick)
「作業ブランチの特定の変更(例: 73050f8)だけを先にマージしたい!」という場合の手順です。
ステップ1: mainブランチを最新にする
git checkout main
git pull origin main
ステップ2: PR用の一時ブランチを作成する
git checkout -b add-parameter-script
ステップ3: 特定のコミットだけをコピー(cherry-pick)
git cherry-pick 73050f8
💡 コンフリクトが起きたら?
修正後、git addしてから以下を実行します。git cherry-pick --continue
ステップ4: PushしてPRを作成
git push -u origin add-parameter-script
ステップ5: マージ後のお掃除
git checkout main
git pull origin main
git branch -d add-parameter-script
3-2. 以前の特定のコミットの状態にハードリセットする
「以前のコミットされた状態(例: 3d4322d)にmainブランチを戻したい」という場合の手順です。
履歴も消されてしまう前提ですので、気を付けてください。
ステップ1: mainブランチにする
git checkout main
git status # 確認
git branch # 確認2
ステップ2: mainブランチの履歴を確認する
git log --oneline --decorate -10 #10履歴を見る
ステップ3: ハードリセット
git reset --hard 3d4322d
git push --force-with-lease origin main
💡 ソフトリセットは?
Revert コマンドを利用して、特定アクションを撤回します。git revert -m 1 0ae260a git push origin mainforce-pushしたくない場合は、この方が無難です。
ステップ4: mainブランチの履歴を再確認する
git log --oneline --decorate -10
第4部:
ソロ開発でよく利用するコマンドをまとめました。
4-1. ローカルでmainブランチへマージ
ローカルブランチで、他のブランチからmainブランチへマージします。
git checkout main
git pull origin main
git merge --no-ff task1-bootstrap-audit-local
git push origin main
最後に
Gitの操作は、最初はエラーメッセージやコマンドが多くて複雑に感じるかもしれません。しかし、今回まとめた「ブランチを切る → 作業する → 最新を取り込む → Pushする」という基本サイクルを繰り返すうちに、息をするように自然に使えるようになっていきます。
もし操作に迷ったり、取り返しのつかないミスをしそうで不安になった時は、**「とりあえず現状の変更をコミットして保存する(またはStashで避難させる)」**ことだけを心がけてください。ローカルに履歴さえ残しておけば、Gitは後からいくらでもやり直せる強力な味方です。
この記事が、あなたのスムーズで安全な開発ライフの「お守り」になれば幸いです。プロジェクトでの開発、応援しています!
Happy Hacking!!