gitのbranchが分かれば、複数人作業におけるgit操作は何とかなるはず。
ということでgitのbranchをまとめます。
はじめてgitを触る人はこちらからどうぞ。
gitの考え方
gitはmainブランチを直接更新するのはご法度らしいです(とはいえ1人だとmainをいじるのが普通だよね)。
例えば測定部、通信部、制御部とそれぞれメンバーがいて同時に開発をする場合、それぞれ別にブランチを作って、そのブランチが完成したらmainブランチにマージすることでmainを育てていく、と。
mainが幹で、feature/measurement, feature/communication, feature/controlが枝葉としてある感じ。
けど、それをどうやってやればいいか分からないんですけど?
ということにならないよう、この記事でまとめたいと思います。
ブランチの作成
branchは下記コマンドで作成できます。
$ git branch "ブランチ名"
既存ブランチと自分の場所を確認する
どのブランチが存在するか、また自分がどこにいるか下記コマンドで分かります。
$ git branch
アスタリスク付きで緑色文字になってるのが、いま自分がいるブランチになります。
* feature/measurement
main
ブランチを切り替える
下記コマンドでブランチを切り替えることができます。
$ git checkout "ブランチ名"
例えば、
$ git checkout "main"
$ git branch
feature/measurement
* main
ブランチを新たに作成して切り替えることもできる
$ git checkout -b "ブランチ名"
とすることで新たにブランチを作成して、その作ったブランチに切り替えることもできます。
ブランチをリモートリポジトリに上げる
2つのパターンがあります。
1.ブランチがリモートリポジトリに存在する場合
$ git push -u origin
2.ブランチがリモートリポジトリに存在しない場合
$ git push --set-upstream origin ブランチ名
ex) git push --set-upstream origin feature/communication
アップストリームブランチとは、リモートに対応するブランチのことです。
コマンドでは、ブランチをリモートリポジトリにプッシュし、同時にアップストリームブランチを origin
(デフォルトのリモート名)に設定しています。
mainブランチに別のブランチをマージする
$ git merge ブランチ名
mainブランチがfeature/testブランチをマージしたい場合、
$ git checkout main
でmainブランチに移動して、
$ git merge feature/test
で、マージ(結合)できます。
多人数でやると、コンフリクト(=衝突)が起こります。
結合先コード(この例でいうとmainブランチ)にて、自分の変更したコード以外の部分で違いがあると発生します。
この場合はこちら側が差分を吸収した上でマージを試みることになりますね。
マージした後はadd, commit、必要に応じてpushします。
最新情報の取得
さっきの話、コンフリクトは差分が大きいほど作業量も増えるので、今の自分がいじってるブランチのコードとリモートに上がっているコードの差分は定期的に見ておくとよいですね。
$ git fetch リモートリポジトリ名
$ git merge リモートリポジトリ名/ブランチ名
ex)
$ git fetch origin
$ git merge origin/feature/measurement
fetchでリモートリポジトリ情報を取得して、mergeで自分のコードに反映するということですね。
で、この2段階作業が面倒だからか、この処理をまとめたpullコマンドも有ります。
$ git pull リモートリポジトリ名 ブランチ名
ex)
$ git pull origin master feature/measurement
ブランチを削除する
ローカルブランチの場合
-dオプションを付加することで削除できます。
git branch -d ブランチ名
ex)
git branch -d feature/measurement
リモートブランチの場合
–deleteオプションを付加することで削除できます。
git push origin --delete ブランチ名
ex)
git push origin --delete feature/measurement
コメント