说我有一个回购X:
<a very long history>-A-B-C-D-E
另一个人有回购Y:
<another very long history>-a-b-c-d-e-f-g-h-...
我想“重新定位”c-d
到我的回购并获得:
<a very long history>-A-B-C-D-E-c'-d'
其中c'是E加差异(b..c)与完全相同的提交消息,作者日期,作者姓名和作者电子邮件与c,而d'是c'加上diff(c..d)和相同信息与d。
我想实现这一点而不首先从repo Y获取完整的<another very long history>-a-b-c-d-e
分支。有插图吗?
答案 0 :(得分:2)
确定:请抓取--depth=3
,这样您只能提交b
,c
和d
。
你甚至不需要为这么简单的事情添加一个遥控器,更不用说克隆了。只是做
git fetch --depth=3 u://r/l branch
git cherry-pick FETCH_HEAD~2..FETCH_HEAD
hvd points out执行深度限制提取会将您的存储库标记为浅,这将禁用从中获取或克隆。由于您实际上并未发布浅层历史记录(对它们的唯一引用是FETCH_HEAD
临时),您可以使用
rm .git/shallow # safe when no shallow histories are published
答案 1 :(得分:0)
在没有获取其他存储库的历史记录的情况下,除了要求其他人通过邮件发送补丁之外,我看不到另一种解决方案。
请注意,如果她/他通过邮件发送,她/他仍然是提交的作者,但您是提交者!
答案 2 :(得分:0)
需要提取(git fetch --all
),但您可以在远程引用上进行修改。
假设您想在Y repo的分支“master”上使用rebase(Y是您使用git remote add Y http://url/to/Y/repo
设置的名称):
git rebase Y/master