Git:便利なコマンド
By JoeVu, at: 2023年11月7日8:16
Estimated Reading Time: __READING_TIME__ minutes


Gitは、開発者がコードリポジトリを効率的に管理するのに役立つ強力なバージョン管理システムです。Gitのプロフェッショナルであっても、バージョン管理を始めたばかりであっても、このガイドでは、基本的なGitコマンドと、Gitワークフローを改善するための便利なヒントやコツを網羅しています。
1. 基本的なGitコマンド
リポジトリ
ローカルGitリポジトリの初期化:
git init
既にコードがあり、新しい変更をリモート/リポジトリにプッシュしたい場合
git remote add origin https://github.com/glinteco-com/...
git remote add non_existed_remote https://non_existed_remote.com/glinteco-com/...
git remote remove non_existed_remote # リモートを削除
公開リポジトリのクローン
git clone [repo_url]
プライベートリポジトリのクローン
git clone ssh://[email protected]/[username]/[repository-name].git
多くの初心者開発者が遭遇する問題の1つは、sshトークンが原因で、アクセス権限を持っているプライベートリポジトリをクローンできないことです。簡単な解決策は、パーソナルトークンを生成して以下を実行することです。
git clone https://[email protected]/glinteco-com/Samples
[トークンを入力]
リポジトリの状態確認
git status
ステージングされた変更
特定のファイルをステージングエリアに追加:
git add [file-name]
新規ファイルと変更済みファイルをすべてステージングエリアに追加:
git add -A
変更のコミット
ステージングされた変更を説明的なメッセージとともにコミット:
git commit -m "[コミットメッセージ]"
ファイルまたはフォルダの削除
リポジトリと作業ディレクトリからファイル(またはフォルダ)を削除:
git rm -r [file-name.txt]
ブランチの管理
アクティブなブランチにアスタリスクが付いたすべてのローカルブランチをリスト表示:
git branch
リモートブランチを含むすべてのブランチをリスト表示:
git branch -a
新しいブランチを作成:
git branch [ブランチ名]
ブランチを削除:
git branch -d [ブランチ名]
強制的にブランチを削除:
git branch -D [ブランチ名]
リモートブランチを削除:
git push origin --delete [ブランチ名]
新しいブランチを作成して切り替える:
git checkout -b [ブランチ名]
リモートブランチをクローンして切り替える:
git checkout -b [ブランチ名] origin/[ブランチ名]
ローカルブランチの名前を変更:
git branch -m [古いブランチ名] [新しいブランチ名]
別のブランチに切り替える:
git checkout [ブランチ名]
最後にチェックアウトしたブランチに切り替える:
git checkout -
ファイルに加えた変更を破棄し、最後にコミットされた状態に戻す:
git checkout -- [file-name.txt]
ブランチをアクティブなブランチにマージ:
git merge [ブランチ名]
ソースブランチをターゲットブランチにマージ:
git merge [ソースブランチ] [ターゲットブランチ]
リモートブランチを削除:
git push origin --delete [ブランチ名]
現在のブランチの名前を変更
git branch -m [新しい名前]
変更のスタッシュ
ブランチを切り替えたり、他の作業を行うために、作業ディレクトリの変更をスタッシュ:
git stash
すべてのスタッシュされたエントリを削除:
git stash clear
変更のプッシュ
ブランチをリモートリポジトリにプッシュ:
git push origin [ブランチ名]
必要に応じてブランチを関連付けて、リモートリポジトリに変更をプッシュ:
git push -u origin [ブランチ名]
以前に関連付けられたブランチのリモートリポジトリに変更をプッシュ:
git push
変更の更新とプル
リモートリポジトリから最新のコミットにローカルリポジトリを更新:
git pull
リモートリポジトリの特定のブランチから変更をプル:
git pull origin [ブランチ名]
設定の管理
グローバルなGitユーザー名とメールアドレスを設定:
git config --global user.name "joevu"
git config --global user.email "[email protected]"
グローバルなGit設定を表示:
git config --global --list
特定のリポジトリのローカルなGitユーザー名とメールアドレスを設定:
git config --local user.name "joevu"
git config --local user.email "[email protected]"
特定のリポジトリのローカルなGit設定を表示:
git config --local --list
2. Gitのヒントとコツ
Gitプリコミットフックをスキップする
-nまたは--no-verifyオプションを使用して、Gitプリコミットフックをスキップできます。
git commit -n -m 'Update' # または git commit -m 'Update' -n
Git履歴の調査
Git履歴のログを表示:
git log
コミット統計を含む要約されたGit履歴を表示:
git log --summary
Git履歴の簡潔な1行表示を表示:
git log --oneline
マージ前の変更のプレビュー
マージする前に、2つのブランチ間の変更を比較:
git diff [ソースブランチ] [ターゲットブランチ]
Git blameによる変更の調査
git blameを使用して、特定のコード行に変更を加えた人を特定:
git blame path/to/file
コミット変更のrevert
IDで特定のコミットをrevert:
git revert [commitid]
高度なrebase
指定されたメインブランチ(例:develop)から現在のブランチをrebase:
git rebase -i develop
Git履歴の比較
特定のファイルの2つのコミット間の変更を比較:
git diff $start_commit..$end_commit -- path/to/file
Git stashの使用
一時的な変更をstashし、後で作業ディレクトリにpopする:
git stash save
git stash pop
他のブランチからコミットを選択する
git reflogまたはgit logを使用して、選択したい他のブランチからgitコミットハッシュを見つけます。その後、以下を実行します。
git cherry-pick hash_value
3. Gitブランチモデル - nvieのフロー
成功するGitブランチモデルには、Vincent DriessenのnvieのGitブランチモデルに従うことを検討してください。このモデルは、プロジェクトのGitブランチを管理するための明確で効率的な構造を提供し、開発チームのスムーズなワークフローを確保します。
このモデルでは、次のブランチを提案しています。
-
メインブランチ:
-
master/main:本番対応のコードを表します。新しいバージョンをリリースする準備が整ったら、developブランチからのみマージします。
-
staging:ステージング対応(uat対応)のコードを表します。新しいバージョンをリリースする準備が整ったら、developブランチからのみマージします。
-
develop:機能ブランチが変更をマージして、次のリリースの準備とテストを行う主な統合ブランチです。
-
-
サポートブランチ:
-
機能ブランチ:これらのブランチは、新しい機能やバグ修正のために作成されます。developから分岐し、作業が完了したらマージされます。
-
リリースブランチ:developから新しいリリースの準備をします。このブランチでは、バグ修正と最終調整のみが許可されます。
-
ホットフィックスブランチ:本番バージョンの重大な問題に対処するためにmasterから作成されます。masterとdevelopの両方にマージされます。
-
Vincent Driessenのモデルは、Gitプロジェクトでのコラボレーション、リリース管理、および問題追跡を簡素化し、開発プロセスを合理化しようとするチームにとって貴重なリファレンスになります。
これらの基本的なGitコマンド、ヒント、およびnvieのGitブランチモデルの紹介により、バージョン管理とコラボレーションの取り組みを強化し、より熟練したGitユーザーになるためのスキルと知識が得られます。