kiyasuの日記

ハッピーうれピーよろしく哀愁

2つのブランチで並行して作業する

リモートのmaster最新を現在のブランチに取り込む

branchAにいるとして、

まずmaster最新の状態をフェッチする。

git fetch origin master

差分確認してみる

git diff branchA origin/master --name-only

ファイル検索して

git ls-files *test.cs

ファイル指定のdiffは場合はこう

git diff branchA origin/master -- dir/test.cs # --以降はファイル名

マージする

git merge origin/master

コンフリクトが起こったのでcheckout。origin/master優先

git checkout --theirs dir/test.cs

その後はaddしてcommitすれば解決

調子に乗ってmaster以外のremoteブランチもマージする

まず該当のリモートブランチを見つける

git branch -a | grep kiyasu

remotes/origin/dev/kiyasu というのが見つかったのでこれをFetch

git fetch origin dev/kiyasu # originというremote branchのdev/kiyasuをfetch

git ls-files test.js # 変更のあったファイルを検索

git diff branchA origin/dev/kiyasu -- dir/js/test.js # diff確認

git merge origin/dev/kiyasu # 問題なさそうなのでマージ

また一つ賢くなってしまった


チェリーピック

ブランチAのcommit-1fで行われた変更のみをブランチBに取り込みたい。こんな時は、ブランチBで

git cherry-pick (commit-1のhash)

とやればよい。これ面白いから好きだな。

自分じゃないbranchのコミットをremoteへpush

Unityの場合、アセットが多かったりしたら切り替えの際にアセット読み込みに時間がかかる。なので切り替えもあまりやりたくない。そのときは

git push origin ブランチ名

とすればよい。コロン使って何かする必要があるかも、と思っていたが一度--set-upstreamとかしておけばこれでいいようだ

マージ後に一度ちゃんと更新されてるか確認しておこう

git diff HEAD~ HEAD "ファイル名"

これで指定のファイルの直前のコミットと現在のコミットを比較できる