merge --allow-unrelated-histories
merge --allow-unrelated-histories
自分たちの local の git に OSS のソースコードだけをtarball だけ持ちこんで開発しておいてあとから、やっぱり、オリジナルのgitの履歴も見たいっていいだすのってあるあるですよね
ないよそんなこと、あったらこんな記事書かないよ
git
ってあとからそんな 馬鹿な ことできるんですよ、そう merge --allow-unreleated-histories
を使えばね
TLDR;
git checkout -b remote-xxxx-yyy $(git log --pretty=%H | tail -1) git merge --allow-unrelated-histories remotes/xxxx/yyyy
やり方
まず最初に、ローカル環境にある開発中のリポジトリに オリジナルの git を登録します
<original-oss-url>
は オリジナルのgitリポジトリのURLで、xxxx は適当な名前、例えば base でもいいです
git remote add xxxx <original-oss-url>
それから、xxxx
の情報をfetch
で取得してからリモートも含めてブランチを全部表示させます。そこで git のログを取得したいブランチを探します。例えば、remotes/xxxx/main
のような名前のはずです。
git fetch xxxx git branch -a
そこで、安全のために今の開発リポジトリの一番古い HASH $(git log --pretty=%H | tail -1)
から適当な名前のブランチを追加させてそこに 先程選んだ ブランチをマージしましょう。ここで --allow-unrelated-histories
は履歴関係のないもののマージを許可させるという意味です。
git checkout -b remote-xxxx-yyy $(git log --pretty=%H | tail -1) git merge --allow-unrelated-histories remotes/xxxx/yyyy
あとは、git log --graph
でも行なって確認してみましょう。
そう、あとはこんなことをしなくて済むように最初からltarball でソースコードを持ち込むなんてことはしないようにお願いします。