git "rebase"只有一些来自外部存储库的提交?

标签 git

假设我有一个存储库 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,这样您就只获得提交bcd.

对于如此简单的事情,您甚至不需要添加 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/

相关文章:

git - 在 Git 中,有没有办法自动将 merge 冲突中所有较新版本的文件标记为正确?

git - 在 git 中用孤立分支覆盖主分支

javascript - 完全自动化传递作为开发 pull 请求确认的一部分

每个分支的 Git 提交钩子(Hook)

git - CocoaPods 是如何工作的

git - 动态 git 配置 user.name - 取决于主机名

linux - Git 推送到本地仓库说 "everything up to date",它不是

.net - Team Foundation Server 版本控制有可能支持像 git 这样的外部仓库

git - 无法执行子模块更新

git - 清理 git 存储库中的二进制 blob