はじめに
Gitは開発現場で欠かせないバージョン管理ツールです。
本記事では、基本コマンド・実務で役立つコマンドをまとめました。
チーム開発でよく使う操作を解説します!
※ 実務で多用するコマンドには 🌟 付けしています。
目次
✅ リポジトリのクローン
リモートリポジトリをローカルに複製します。
# リポジトリをクローン 🌟
git clone リポジトリURL
# 任意のディレクトリ名でクローン
git clone リポジトリURL ディレクトリ名
💡 初めてプロジェクトに参加する際に実行する基本操作です。
🔄 既存プロジェクトの更新
他のメンバーの変更を取得し、自分の作業環境に反映します。
# 最新のコードを取得(ローカルには反映されない)🌟
git fetch
# mainの最新を取得&マージ(fetch + merge のショートカット)🌟
git pull origin main
# mainブランチの変更内容を統合 🌟
git merge main
💡 git pull
は作業開始前に必ず実行し、最新の状態を保持しましょう。
🌿 ブランチ操作
機能ごとにブランチを作成し、適切に管理します。
# 現在のブランチを確認
git branch --contains
# 新しいブランチを作成
git branch ブランチ名
# ブランチを切り替える 🌟
git checkout ブランチ名
git switch ブランチ名
# 新規ブランチを作成して切り替える 🌟
git checkout -b ブランチ名
💡 mainやdevelopで直接作業せず、必ずブランチを作成して作業しましょう。
🔥 ステージングとコミット
作業内容をステージングし、履歴に残します。
ステージング操作
# コミット対象をステージング
git add ファイルパス
# カレントディレクトリ配下のコミット対象を一括でステージング 🌟
git add .
# ステージの状態を確認 🌟
git status
# ステージングを解除(HEADの状態に戻す)
git reset HEAD
# 特定のファイルだけステージング解除
git reset HEAD ファイルパス
コミット操作
# コミット(メッセージをつける)🌟
git commit -m "コミットメッセージ"
# エディタでコミットメッセージを入力(vi操作)
git commit
# メッセージ入力 → `esc` → `:wq` → `Enter`
💡 こまめにコミットし、変更の追跡を容易にしましょう。
🚀 リモートへのプッシュ
コミットした変更をリモートリポジトリに反映します。
# 作業ブランチのプッシュ初回 🌟
git push -u origin ブランチ名
# -u: upstream の略で、ブランチの最新状態を自分のローカルリポジトリと同期するための基準になるリモートブランチ
# 作業ブランチのプッシュ2度目以降
git push origin ブランチ名 🌟
git push origin HEAD # HEAD:今作業しているブランチの場所を示すポインタ 🌟
💡 プッシュ前に git status
や git branch
で確認すると尚よしです!
🔀 マージ
複数のブランチを統合する際に使用するのが git merge
です。
✅ 基本的なマージ
# mainブランチに移動 🌟
git checkout main
# mainの最新を取得 🌟
git pull origin main
# 作業ブランチに移動 🌟
git checkout ブランチ名
# mainを作業ブランチへマージ 🌟
git merge main
💡 ポイント
-
git merge
は現在のブランチに対して指定ブランチを統合します。 - コンフリクトが発生した場合は手動で解決し、再度コミットが必要です。
🔥 マージ時のコンフリクト解消
コンフリクトが発生すると以下のように表示されます。
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
競合箇所を修正
# コンフリクトを修正した後、ステージング
git add .
# マージ完了
git commit -m "コンフリクト解消"
💡 マージのコツ
- マージ前に必ず
git fetch
で最新の状態にしましょう。 - コンフリクト解消後は、他のメンバーと内容を確認しましょう。
🔄 マージコミットを避ける(Fast-forwardマージ)
# Fast-forwardでマージ(履歴がきれいに)
git merge --ff ブランチ名
💡 Fast-forwardマージとは
- 分岐した履歴がない場合に、ブランチを直線的に統合する方法です。
- 履歴が複雑にならないため、シンプルな作業では推奨されます。
⏪ 変更の取り消し
「間違えてコミットした」「前の状態に戻したい」ときに使用します。
リセット(reset)
# コミットを取り消して作業ツリーに戻す(変更は保持)
git reset --soft 取り消すコミットID
git reset --soft HEAD # HEAD:直前のコミット
# コミットを取り消し、ステージングも解除
git reset --mixed 取り消すコミットID
# コミットを完全に取り消して変更も削除(要注意)
git reset --hard 取り消すコミットID
💡 --hard
は不可逆なので慎重に!
リバート(revert)
# コミットを取り消し、新たなコミットとして反映
git revert 取り消すコミットID 🌟
git revert HEAD # HEAD:直前のコミット
💡 リモートにpush済みの変更を取り消す場合は、reset
ではなく revert
を推奨。
💡 推奨理由:複数人で一つのブランチを操作する際に reset
だと コミット履歴を削除してしまうため、他の人が以降一切のコミット操作ができなくなる。
-
reset
:変更を完全に取り消す = コミット履歴を削除する -
revert
:変更を取り消すための新しいコミットを生成する = コミット履歴は残る
🥺チーム開発の際は推奨でなく必ず revert
を使ってください🥺
🧷 実務で役立つ便利なGitコマンド
💾 スタッシュ操作
作業中の変更を一時的に退避し、別の作業に移る際に役立ちます。
# 作業内容を一時退避 🌟
git stash
# 作業内容を一時退避:メモ付きでスタッシュしたい場合 ✍️ 🌟
git stash save "作業中の修正メモ"
# Gitのバージョン2.13以降では以下の形式も使用できます。
git stash push -m "作業中の修正メモ"
# スタッシュの一覧を表示 🌟
git stash list
# git stash list の実行例
stash@{0}: On main: 修正内容A
stash@{1}: On main: 修正内容B
・
・
・
# 最新のスタッシュ(stash@{0})を適用
git stash apply
# 特定のスタッシュを適用:''には stash@{~}内のスタッシュ番号を指定 🌟
git stash apply '1'
# スタッシュを削除 🌟
git stash drop '0'
# すべてのスタッシュを削除
git stash clear
✅ 使用シーン
- 急なブランチ切り替えやレビュー対応時に作業を退避しておけます。
- 必要なスタッシュは削除せず、後で適用可能です。
✏️ ブランチ名の変更
# 現在のブランチ名を変更 🌟
git branch -m 新ブランチ名
# 特定のブランチ名を変更
git branch -m 古いブランチ名 新ブランチ名
# リモートに反映
git push origin 新ブランチ名
# 古いブランチをリモートから削除
git push origin --delete 古いブランチ名
✅ 使用シーン
- タイポ修正や命名規則の変更時に便利です。
🎯 特定のコミットを確認
# ログの表示(簡易)🌟(`revert`時にコミットIDを見たい場合等)
git log --oneline --graph
# 特定のファイルの変更履歴を確認
git log -- ファイル名
🚧 競合解決
# 競合ファイルを確認
git status
# 競合を手動で修正した後、変更をステージング
git add 競合ファイル
# 競合解決後、マージ完了
git commit -m "競合解消"
🗑️ 不要なブランチ・リポジトリの削除
# ローカルのブランチを削除 🌟
git branch -d ブランチ名
# 強制削除 🌟
git branch -D ブランチ名
# ローカルリポジトリを削除
rm -rf .git
# リポジトリ削除確認
ls -lah
🎉 まとめ
本記事では、Gitの基本コマンド+実務で役立つ操作を紹介しました。
以下、まとめになります。
✅ クローン: git clone
🔄 更新:git fetch / git pull
🌿 ブランチ操作:git branch / git checkout
🔥 ステージングとコミット:git add / git commit
🚀 プッシュと削除:git push / git branch -d
🔀 マージ操作:git merge / git merge --ff
⏪ リセット・リバート:git reset / git revert
💾 スタッシュ:stash
✏️ ブランチ名変更:branch -m
Gitをマスターすると、作業効率が向上し、チーム開発時のトラブル対応もスムーズになります!