ばーろぐわにる

SIerからWEB系?インフラエンジニアにジョブチェンジした見習いの備忘録。投稿内容は私個人の意見であり、所属企業・部門見解を代表するものではありません。

git mergeで複数ブランチの変更を適用する

やりたいこと

複数のブランチの設定を適用した状態でテストを実施したい。目的が異なるため複数ブランチで修正を実施していたが、両方共適用しないと上手くアプリが動かないという状態に陥った。

やりかた

git clone git@github.com:hoge/fuga.git -b dev1
cd fuga
git checkout -b dev2 origin/dev2
git merge dev2

checkout -b hoge origin/hoge でリモートからブランチをcheckout

これでdev1にdev2がマージされる。普段はそれぞれでブランチ切って、GitHub上でマスターにマージするだけだったのでローカルでやるとこんな感じ

作業中のブランチ最新のmasterを反映したいときも git merge でいける

git merge master

めも

最初、以下コマンドで git clone してたところ、ずっと他のブランチが見えなくてなんでだろうと思ってた。このコマンドはスクリプトからコピペしてたので注意してなかった

git clone --depth 1 git@github.com:hoge/fuga.git -b dev1

リモートブランチは .git/packed-refs で定義されている。 —depth を利用すると、デフォルトで --single-branch が有効になり、remoteブランチの情報は格納されない。 --no-single-branch を利用することでリモートブランチの情報が格納される

—depth は指定したコミット数分だけcloneできる。ダウンロードサイズを減らすことができるのでデプロイなどで利用すると便利

かんそう

普段あんまり複雑な操作をしてないのでたまに変わったことをやろうとすると都度調べてる。まあ何事も勉強ということで。ただしコピペしたコマンドを何も考えずに使っちゃうクセは治す。

さんこう

https://techacademy.jp/magazine/10264

https://kakakakakku.hatenablog.com/entry/2017/03/22/195640

https://git-scm.com/docs/git-clone

https://git-scm.com/book/ja/v1/Gitの内側-メインテナンスとデータリカバリ(