2

假设我有一个回购 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 加上 diff (b..c) 与 c 具有完全相同的提交消息、作者日期、作者姓名和作者电子邮件,d' 是 c' 加上 diff (c..d) 和与 d 相同的信息.

我想在不<another very long history>-a-b-c-d-e先从 repo Y 获取完整分支的情况下实现这一点。有插图吗?

4

3 回答 3

2

当然:做你的 fetch--depth=3所以你只得到提交b,cd.

对于这么简单的事情,您甚至不需要添加遥控器,更不用说克隆了。做就是了

git fetch --depth=3 u://r/l branch
git cherry-pick FETCH_HEAD~2..FETCH_HEAD

hvd 指出,进行深度限制的提取会将您的存储库标记为浅,这将禁用从中提取或克隆。由于您实际上并没有发布浅层历史(对它们的唯一引用是FETCH_HEAD临时的),您可以删除文件

rm .git/shallow    # safe when no shallow histories are published
于 2013-10-24T08:28:25.173 回答
0

获取是必需的(git fetch --all),但您可以基于远程参考。

假设你想在 Y repo 的“master”分支上 rebase(Y 是你设置的名称git remote add Y http://url/to/Y/repo):

git rebase Y/master
于 2013-10-24T08:21:04.260 回答
0

如果不获取其他存储库的历史记录,除了要求其他人通过邮件发送补丁之外,我看不到其他解决方案。

请注意,如果她/他通过邮件发送它们,她/他仍然是提交的作者,但您是提交者!

于 2013-10-24T08:16:16.257 回答