チーム開発のためのGitバージョン管理
チームで作業する場合は、編集を始める前にローカルリポジトリをリモートリポジトリと同期し、自分の変更にはブランチを使い、レビューや統合の準備ができたら作業内容をサーバーへプッシュします。
編集前にpullする
作業を始める前に、リモートリポジトリからローカルコピーを更新します。
git pull
これにより、古いコードの上で編集してしまうことを避けられます。チームで特定のメインブランチを使っている場合は、まずそのブランチに切り替えてからpullします。
git checkout master
git pull origin master
現在では、masterではなくmainを使うリポジトリもあります。プロジェクトで使われているブランチ名を確認してください。
現在のブランチを確認する
ローカルブランチをすべて表示し、現在どのブランチにいるかを確認するには、次を実行します。
git branch
現在のブランチには*が付きます。
新しいブランチを作成して切り替える
作業用のブランチを作成します。
git branch branchname
git checkout branchname
同じ操作は、1つのコマンドでも実行できます。
git checkout -b branchname
fix-login-errorやfeature-user-profileのように分かりやすいブランチ名を使うと、他のチームメンバーが作業の目的を理解しやすくなります。
変更をコミットする
ファイルを編集したら、何が変更されたかを確認します。
git status
git diff
コミットしたいファイルを追加します。
git add filename
次にコミットを作成します。
git commit -m "Describe the change"
良いコミットメッセージは、何が変わったのか、なぜ変えたのかを簡潔に説明します。
ブランチをマージする
ブランチをメインの開発ブランチへ戻してマージする準備ができたら、まず対象のブランチに切り替えます。
git checkout master
git pull origin master
次に作業ブランチをマージします。
git merge branchname
コンフリクトがある場合、Gitは修正が必要なファイルを表示します。それらのファイルを開き、コンフリクトマーカーを解消し、結果をテストしてからマージをコミットします。
完了したブランチを削除する
ブランチがマージされたら、ローカルブランチを削除します。
git branch -d branchname
ブランチがまだマージされていない場合、Gitは削除せずに警告を表示します。
コードをサーバーへプッシュする
ブランチをリモートリポジトリへプッシュするには、次を実行します。
git push origin branchname
masterへマージした場合は、更新されたmasterブランチをプッシュします。
git push origin master
同様に、リポジトリがmainを使っている場合は、masterをmainに置き換えてください。
基本的なチームワークフロー
シンプルなチームワークフローは次のとおりです。
git checkout master
git pull origin master
git checkout -b branchname
# edit files
git status
git add filename
git commit -m "Describe the change"
git checkout master
git pull origin master
git merge branchname
git push origin master
git branch -d branchname
大規模なチームでは、メインブランチへ直接マージするよりも、ブランチをプッシュしてプルリクエストを開く方が通常は適しています。これにより、変更が受け入れられる前にコードレビュー、自動テスト、議論を行えます。
