gitについて最近覚えたことなど
別リポジトリからの差分取り込み
もともと似てるソースが別リポジトリになってしまった・・・んで差分取り込みたい、なんて時に別リポジトリからの取り込みが可能なようです。
1 2 3 |
git remote add FIXED_REPO {すでに修正を導入したリポジトリのURL} git fetch FIXED_REPO git cherry-pick {FIXED_REPO上のコミットのSHA1} |
おそらくですが、リポジトリがoriginのものと別のものを作成するということらしいです。
が、うまくいかない時もあります。うまくできない時には一度checkoutしてそのソースにうつってみたりするとOKなこともあります(要調査)。
参考リンク
別ブランチからファイルのみ取り込み
ちなみに別ブランチからファイルを取り込みたい場合は、下記のようなコマンドで。
1 |
git checkout ブランチ名 ファイルパス |
追跡ブランチをローカルに取り込みたいとき
実務では追跡ブランチからの取り込みというケースが結構あります。
追跡ブランチからローカルブランチを作る方法~ (svn→gitの移行など)
例えば中央リポジトリではもともと
- master
- dev
というブランチがあったとして、誰かがdev2というブランチを作成しました。
この時、自分のPCにdev2を取り込みたい!って時ですが、今まではdevからブランチを作って取り込んでいました。この場合、dev2の作成ルートがdevと関係なかった場合、おかしなことになります。
が、上記のようなやり取りをせずともリモートの追跡ブランチを作成することはできるようで、
1 |
git fetch --all |
とやれば普通に追跡ブランチを作成できました。この後普通に下記のように追跡ブランチからの取り込みをすればOKです。
1 |
git checkout -b dev2 remotes/origin/dev2 |
早く知っておくべきだった・・・
強引なgit stash
一時的な保存としてgit stashを使うと思うのですが、うまくいかず、下記のようなメッセージが出てしまうこともあります。
Cannot apply to a dirty working tree, please stage your changes
この場合、差分自体は見れるので、
1 |
git stash show -p | git apply |
とやると差分がうまく取り込めます。