我在 GitHub 上有这个存储库:
copy
在original
之上添加了一些提交,而我的fork
在copy
之上还有其他提交(按时间顺序,存储库之间没有时间重叠)
我想保留分叉的结构,以便将来将我的承诺放入
original
,就像制作original
的分叉一样,然后添加copy
提交,然后添加fork
提交,保留它们的作者,希望也保留时间戳。像这样的东西:
有办法做到这一点吗?
是的,有可能。 首先,克隆当前的分支,添加原始存储库作为远程并获取所有数据
git clone [email protected]:YOUR-USERNAME/fork.git
git remote add upstream [email protected]:user1/original.git
git fetch --all
然后,创建一个新分支并将 user2 的存储库添加为另一个远程
git checkout -b restructured upstream/main
git remote add user2repo [email protected]:user2/copy.git
然后,从您的分叉中挑选 user2 的提交和您自己的提交。
git log user2repo/main
git cherry-pick FIRST_COMMIT^..LAST_COMMIT
git cherry-pick YOUR_FIRST_COMMIT^..YOUR_LAST_COMMIT
最后将重组后的分支推送到你的分支上
git push -u origin restructured
它将创建一个具有您想要的确切结构的新分支:原始基础 + user2 的提交 + 您的提交,所有这些都具有正确的归属和时间戳
然后,您可以使用这个重组后的分支作为未来向原始存储库发出拉取请求的基础。提交历史记录将是干净且线性的,从而更容易审查和合并。
谢谢你。