将缺少历史记录的git存储库合并到保留历史记录的存储库 < > 下载的C++程序的源代码,而不是克隆> 其Git存储库
使用此源代码(没有git历史记录),我创建了一个git repo,编写了一段时间的代码,并将所有的工作/分支推送到我的github上 我现在想发出一个请求,将我的代码合并到calatk.git上的原始git存储库中将缺少历史记录的git存储库合并到保留历史记录的存储库 < > 下载的C++程序的源代码,而不是克隆> 其Git存储库,git,github,version-control,merge,pull-request,Git,Github,Version Control,Merge,Pull Request,使用此源代码(没有git历史记录),我创建了一个git repo,编写了一段时间的代码,并将所有的工作/分支推送到我的github上 我现在想发出一个请求,将我的代码合并到calatk.git上的原始git存储库中 我想知道如何才能做到这一点,因为我的存储库中没有以前提交的跟踪。calatk.org上的此存储库此后不应更新,这意味着他们的最后一次提交与我在github上的第一次提交相同。如果您不介意将发布的github存储库替换为包含原始项目历史的存储库†,我将尝试以下操作: 将上游存储库添加为
我想知道如何才能做到这一点,因为我的存储库中没有以前提交的跟踪。calatk.org上的此存储库此后不应更新,这意味着他们的最后一次提交与我在github上的第一次提交相同。如果您不介意将发布的github存储库替换为包含原始项目历史的存储库†,我将尝试以下操作:
git remote add upstream <clone-url>
这将生成新的分支指针,包括上游/master
<代码>上游/master不应与现有提交共享历史记录。也就是说,您将有两个根提交:一个来自上游项目,另一个来自您的forkmaster
):
此时,您应该只有一个根提交:来自上游项目的根提交。旧根提交的哈希值(现在不再是根提交)应与上游项目中显示的内容相匹配(3cee904
)
您可以使用类似于git show 3cee904的东西来确保提交是正确的git push --force origin master
从您的公共GitHub存储库中获取
†重要提示:如果您的GitHub项目中有合作者,这可能不是最佳选择。通常不鼓励在Git中修改共享提交。我之所以推荐它,是因为听起来您的GitHub存储库实际上是一个个人存储库。“这意味着他们的最后一次提交将与我在GitHub上的第一次提交相同”,只是他们的哈希值不同,所以就Git而言,他们根本不一样。
git checkout master
git rebase upstream/master
git push --force origin master