はじめに
本記事はGit/GitHubを用いてチーム開発をする上での必要な知識を、初学者である私が調べてまとめたものになります。
基本的な内容が中心となっています。
考え方
Git FlowやGitHub Flowなどのブランチ戦略を基に作業する。
ローカルでの作業
ブランチを切って作業する。
ブランチ名はブランチ戦略を基に決める。
mainブランチでは作業を行わない。
pushする時もmainブランチからではなく、切り分けたブランチからする。
使うコマンド
# ブランチの確認
git branch
# ブランチの作成
git branch <作成するブランチ名>
# ブランチの切り替え
git switch <切り替え先ブランチ名>
# 作成と切り替えを同時に行う
git switch -c <新ブランチ名>
# 初回のプッシュ
# リモートブランチ名を省略した場合
git push -u origin <ローカルブランチ名>
# ローカルブランチと異なる名前のリモートブランチにプッシュしたい場合
git push -u origin <ローカルブランチ名>:<リモートブランチ名>
# 2回目以降のプッシュ
git push
リモートブランチの作成タイミング
ローカルブランチからpushした時に、コミットのプッシュに加えて、指定したブランチの名前のリモートブランチが新規作成される。
コミットメッセージについて
fix:のようなPrefixをつけるとぱっと見で意味が伝わりやすくなる。
Issueとの紐づけ(#番号)も推奨される。
Semantic Commit MessagesやConventional Commitsといった規約を採用するとよい。
変更取り消し
コミット前のローカルでの作業の取り消し
git restoreコマンドを使用する。
# ワークツリーでの取り消し
git restore <ファイル名>
# ステージングエリアでの取り消し
git restore --staged <ファイル名>
コミットの取り消し
チーム開発の際、git revertコマンドを使用するとコミットを安全に取り消すことができる。
- 既存のコミットを削除するのではなく、そのコミットで行われた変更を打ち消す新しいコミットを作成する
- 履歴が保持されるため、チーム全員のリポジトリで一貫性が保たれる
# 直近のコミットの取り消し(以下2つは同じ)
git revert @
git revert HEAD
# -nまたは--no-editオプションでエディタを立ち上げずデフォルトのコミットメッセージとする
git revert -n @
# 直近ではないコミットを取り消す場合は^か~を使用して指定する
# 1つ前のコミットの取り消し(以下2つは同じ)
git revert @^
git revert @~
# 2つ前のコミットの取り消し(以下2つは同じ)
git revert @^^
git revert @~~
git resetコマンドについて
git resetはコミット履歴を書き換えるコマンドのため、チーム開発において、基本的には使用しない。
ただ、まだリモートにプッシュしていないローカルコミットの取り消しには使用してもいい。
自分がプッシュする前に、間違ったコミットをしてしまった場合などには、git resetでローカルの履歴を修正しても他のメンバーには影響しない。
構文はgit revertと同様。
リモートリポジトリからの情報の取得
安全に開発するためにローカルのmainブランチをリモートの最新状態に更新し、その後に他のブランチに切り替えてmainの変更を取り込む。
手順
1. (他ブランチにいた場合)mainブランチに切り替える
git switch main
2. ローカルのmainブランチをリモートリポジトリの最新状態に更新する
git pull origin main
3. 作業中だったブランチに切り替える
git switch <他ブランチ名>
4. マージする
git merge main
プルリクエストの手順
1. ローカルのmainブランチを最新の状態にする
# mainブランチ以外のブランチにいる場合は切り替える
git switch main
# 最新の状態に更新する
git pull origin main
2. ブランチを作成する
git switch -c <新ブランチ名>
3. ファイルの修正、コミットをする
作業を行って完了後にコミットまで行う。
git add <ファイル名>
git commit -m "コミットメッセージ"
4. プッシュする
git push -u origin <ローカルブランチ名>
5. プルリクエストを作成する 6. コードレビューを行う
GitHubでプルリクエストを作成し、コードレビューを行う。
プルリクエストのコメント欄にclose #issue番号を含める。
7. マージする
GitHub上でマージする。
8. mainブランチに移動してリモートリポジトリからpullする
マージ後の最新のリモートリポジトリからpullする。
不要になったブランチは削除する。
# mainブランチに切り替える
git switch main
# リモートリポジトリの最新情報を取得する
git pull origin main
# 不要なブランチを削除する
git branch -d <削除対象ブランチ名>
その他参考