当前位置:  开发笔记 > 开发工具 > 正文

将现有的Git存储库推送到Github只会发送大约一半的提交?

如何解决《将现有的Git存储库推送到Github只会发送大约一半的提交?》经验,为你挑选了2个好方法。

我有一个本地Git存储库,我已经开发了几天:到目前为止它有18个提交.今晚,我创建了一个私有的Github存储库,我希望将其推送到; 然而,当我这样做时,它最终只将18个提交中的8个提交给Github.我删除了Github repo并重试,结果相同.

有关为什么会发生这种情况的任何想法?我之前没有成功完成这个程序,所以我有点难过.

更新:此回购中只有,而且一直只有主分支.只是为了解决一些已发布的答案......



1> farktronix..:

我看了一下有问题的存储库,这里是发生了什么:

在某些时候,rpj已经表演了git checkout [commit id].这指出HEAD处于松散的提交而不是公认的分支.我相信这是CesarB所指的"悬空HEAD"问题.

没有意识到这个问题,他继续改变和提交它们,每次都让HEAD起来.然而,HEAD只是指着悬挂的一系列承诺,而不是一个公认的分支.

当他去推动他的改变时,git将所有东西都推到了主人的顶端,这只是当前他所在的树的一半.

随之而来的是混乱

这个图表应该更清楚:

                 -- D -- E -- F
                /             ^
   A -- B -- C -              |
   ^         ^               HEAD
   |         |
 remote    master

当他试图推动他的变化时,只有A通过C被推动并向上remote移动C.他无法D通过F推送进行提交,因为他们没有被已知的分支引用.

这是你在这种状态下所看到的:

$ git branch
* (no branch)
master

解决方案是master提升到F悬挂的提交链中.这就是我做到的.

为当前状态创建合法分支:

git checkout -b tmp

tmp分支正指向在提交F该图中上述

快进mastertmp

git checkout master

git merge tmp

master现在指向提交F.

扔掉你的临时分支

git branch -d tmp

您可以愉快地推送到远程存储库,它应该发送所有更改.



2> Aristotle Pa..:

从Git 1.7.3开始,您可以使用一个简单的命令执行此操作:

git checkout -B master

-b开关装置"检查出来之前,在这里创建分支",并-B是该无条件版本,"即使转移已经存在-在这种情况下,在这里将它检查出来之前".


解决此类问题的一种非常简单的方法是删除master分支并重新创建它.毕竟,git中的master分支只是提交的名称,而分支并不特别.

因此,假设当前提交是您想要的提交master,您只需这样做

git branch -D master

删除现有master分支,然后执行

git checkout -b master

a)创建一个新的分支master,指向当前提交,b)更新HEAD指向master分支.在那之后,HEAD将被附加master,因此master每当你提交时将继续前进.

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有