Git/Github:修复存储库历史记录

问题描述 投票:0回答:1

我在 GitHub 上有这个存储库:

  • [用户1]原创
  • [用户2]复制(原件)
  • \ -> [ME] 叉子(复制(原始))

copy
original
之上添加了一些提交,而我的
fork
copy
之上还有其他提交(按时间顺序,存储库之间没有时间重叠)

我想保留分叉的结构,以便将来将我的承诺放入

original
,就像制作
original
的分叉一样,然后添加
copy
提交,然后添加
fork 
提交,保留它们的作者,希望也保留时间戳。像这样的东西:

  • [用户1]原创
  • \ -> [ME] 叉子(原版)<-- but with the commits that user 2 has on his own copy(original), and my commits on top of them

有办法做到这一点吗?

git github fork repo git-fork
1个回答
2
投票

是的,有可能。 首先,克隆当前的分支,添加原始存储库作为远程并获取所有数据

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 的提交 + 您的提交,所有这些都具有正确的归属和时间戳

然后,您可以使用这个重组后的分支作为未来向原始存储库发出拉取请求的基础。提交历史记录将是干净且线性的,从而更容易审查和合并。

谢谢你。

© www.soinside.com 2019 - 2024. All rights reserved.