剪切后连接 git 条历史记录
Connect git historys after cut
我的两个回购来自同一个项目。我在提交 3
后创建了一个历史记录,现在只使用 Repo ProjectnameWorking.
git log 回购 "ProjectnameArchiv":
30114b2afac5d1c5a968441151ee8f91fc015ff3 4
9aa472d04501a14b5b704fde32445461f99f539a 3
1d0e5abe5daf60c0d86819938ba1aefd44b87ff5 2
766f4880e8ccf61bdc718dfae62466f800ae8119 1
git 日志 回购 "ProjectnameWorking":
2932c4b8ea681f0a97bf151ccc46d2044e8e5a50 5
27ec1a4618f1bf0025b8ba83fd69c2607cdf78d4 4
有没有办法稍后将历史记录和项目文件连接到一个?
git 日志 回购 "Projectname"
2932c4b8ea681f0a97bf151ccc46d2044e8e5a50 5
27ec1a4618f1bf0025b8ba83fd69c2607cdf78d4 4
9aa472d04501a14b5b704fde32445461f99f539a 3
1d0e5abe5daf60c0d86819938ba1aefd44b87ff5 2
766f4880e8ccf61bdc718dfae62466f800ae8119 1
编辑:
- 在 Repo 提交 4 "ProjectnameArchiv" - 从 cut
中获取新哈希
是的,这是可能的,但其中一个项目的 SHA 会发生变化:
创建一个公共远程仓库:
/some/other/path> git init . --bare
在 ProjectnameArchiv
的 9aa472d04501a14b5b704fde32445461f99f539a
创建一个分支并将其推送到远程:
ProjectnameArchiv> git branch merge-base 9aa472d04501a14b5b704fde32445461f99f539a
ProjectnameArchiv> git remote add origin file:///some/other/path
ProjectnameArchiv> git push --all
在另一个 repo 中执行相同操作,但获取而不是推送:
ProjectnameWorking> git branch working-top 2932c4b8ea681f0a97bf151ccc46d2044e8e5a50
ProjectnameWorking> git remote add origin file:///some/other/path
ProjectnameWorking> git fetch origin
cherry-pick 归档分支中的第一个工作提交:
ProjectnameWorking> git checkout -b archive origin/merge-base
ProjectnameWorking> git cherry-pick 9aa472d04501a14b5b704fde32445461f99f539a
如果你只有几个提交,你可以继续挑选,但对于更大的数量,rebase-ing 其余的工作分支到存档分支更快:
ProjectnameWorking> git rebase --onto archive 9aa472d04501a14b5b704fde32445461f99f539a working-top
您可以添加 git 的 -i
选项以在它开始之前检查它在做什么,并在出现问题时中断该过程。
之后,工作存储库的更改将添加到存档存储库,但它们会获得新的 SHA。
我的两个回购来自同一个项目。我在提交 3
后创建了一个历史记录,现在只使用 Repo ProjectnameWorking.
git log 回购 "ProjectnameArchiv":
30114b2afac5d1c5a968441151ee8f91fc015ff3 4
9aa472d04501a14b5b704fde32445461f99f539a 3
1d0e5abe5daf60c0d86819938ba1aefd44b87ff5 2
766f4880e8ccf61bdc718dfae62466f800ae8119 1
git 日志 回购 "ProjectnameWorking":
2932c4b8ea681f0a97bf151ccc46d2044e8e5a50 5
27ec1a4618f1bf0025b8ba83fd69c2607cdf78d4 4
有没有办法稍后将历史记录和项目文件连接到一个?
git 日志 回购 "Projectname"
2932c4b8ea681f0a97bf151ccc46d2044e8e5a50 5
27ec1a4618f1bf0025b8ba83fd69c2607cdf78d4 4
9aa472d04501a14b5b704fde32445461f99f539a 3
1d0e5abe5daf60c0d86819938ba1aefd44b87ff5 2
766f4880e8ccf61bdc718dfae62466f800ae8119 1
编辑:
- 在 Repo 提交 4 "ProjectnameArchiv" - 从 cut 中获取新哈希
是的,这是可能的,但其中一个项目的 SHA 会发生变化:
创建一个公共远程仓库:
/some/other/path> git init . --bare
在
ProjectnameArchiv
的9aa472d04501a14b5b704fde32445461f99f539a
创建一个分支并将其推送到远程:ProjectnameArchiv> git branch merge-base 9aa472d04501a14b5b704fde32445461f99f539a ProjectnameArchiv> git remote add origin file:///some/other/path ProjectnameArchiv> git push --all
在另一个 repo 中执行相同操作,但获取而不是推送:
ProjectnameWorking> git branch working-top 2932c4b8ea681f0a97bf151ccc46d2044e8e5a50 ProjectnameWorking> git remote add origin file:///some/other/path ProjectnameWorking> git fetch origin
cherry-pick 归档分支中的第一个工作提交:
ProjectnameWorking> git checkout -b archive origin/merge-base ProjectnameWorking> git cherry-pick 9aa472d04501a14b5b704fde32445461f99f539a
如果你只有几个提交,你可以继续挑选,但对于更大的数量,rebase-ing 其余的工作分支到存档分支更快:
ProjectnameWorking> git rebase --onto archive 9aa472d04501a14b5b704fde32445461f99f539a working-top
您可以添加 git 的
-i
选项以在它开始之前检查它在做什么,并在出现问题时中断该过程。
之后,工作存储库的更改将添加到存档存储库,但它们会获得新的 SHA。