我有几个不同的 git 存储库,我想将它们合并到一个整体存储库中,同时保留它们的历史记录。我找到了一种方法来做到这一点,但我对 git log 向我显示的单个文件历史记录有点困惑。
这是我的输出:
git log --oneline
组合回购的输出
------- (HEAD -> master) Merge repoC into mono repo
------- Merge repoB into mono repo
------- Merge repoA into mono repo
------- initial commit
------- Add README to repoC
------- Add README to repoB
------- Add README to repoA
git log --oneline repoA/README.md
组合回购的输出
------- Merge repoA into mono repo
git log --oneline -m --follow repoA/README.md
组合回购的输出
------- (from -------) (HEAD -> master) Merge repoC into mono repo
------- (from -------) Merge repoB into mono repo
------- (from -------) Merge repoA into mono repo
------- (from -------) Merge repoA into mono repo
------- initial commit
------- Add README to repoC
------- Add README to repoB
------- Add README to repoA
从所有单独的存储库作为捆绑包开始,我执行以下操作来创建我的整体存储库:
对于回购 A/B/C
git init
echo "repo" > README.md
git add .
git commit -m 'Add README to repo'
git bundle create ../repo{A,B,C}.bundle --all
创建组合仓库 git init echo "initial" > README.md git add 。git commit -m '初始提交'
对于每个回购
mkdir repo{A,B,C}
git fetch ../repo{A,B,C}.bundle master
git merge --allow-unrelated-histories -s ours --no-commit FETCH_HEAD
git read-tree --prefix=repoA -u FETCH_HEAD
git commit -m "Merge repo{A,B,C} into mono repo"
为什么我在使用“-m --follow”运行时会得到与特定文件无关的 git 提交历史记录?我希望只看到与文件有关的提交。
更新(尝试使用不同名称和内容的文件的日志):
git log -m --follow --oneline repoB/sue.md`
-------(from -------) (HEAD -> master) Merge repo C into mono repo`
-------(from -------) Merge repo B into mono repo`
-------(from -------) Merge repo B into mono repo`