假设我有一个存储库 X:
<a very long history>-A-B-C-D-E
另一个人有一个仓库 Y:
<another very long history>-a-b-c-d-e-f-g-h-...
我想“ rebase ”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
的情况下实现这一点首先从仓库 Y 分支。有图吗?
最佳答案
当然:执行提取--depth=3
,这样您就只获得提交b
、c
和d
.
对于如此简单的事情,您甚至不需要添加 Remote ,更不用说克隆了。就这么做
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
关于git "rebase"只有一些来自外部存储库的提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19560182/