Git远程覆盖导致两个断开连接的历史记录
我对Git相当陌生,所以在知道我想用于开发存储库的工作流和结构之前,我一直在使用它。 我创建了一个本地存储库,我想用它来替换远程存储库。 我目前是唯一使用它的人(虽然我克隆了不同的机器)。
基本上,我创建了一个新的本地存储库,并以我想要的方式得到它。 我强制推送到远程存储库来覆盖旧的,如下所述:我如何选择用本地提交覆盖远程存储库? ...除了我使用URL而不是原点。
然后我添加了远程存储库并检查它是否工作。
$ git remote add origin <url>
我查看了完整的历史记录,并最终得到了这样的结果:
不好了! 所以我删除了遥控器并且没有改变。 现在我有这个独立的历史和不存在的分支。 那么我试过这个:如何从Git中删除无效的远程分支引用?
它没有帮助。
$ git remote show
显示为空。 有什么办法可以解决这个问题吗? 我不明白如何只是添加一个远程可能会糟糕的我的工作目录!
编辑:我只注意到旧历史上有一个分支与新分支不一样。 另外,我在添加远程存储库后进行提取。 我可以看到旧的分支
$ git reflog --all
它显示为
16903f4 refs/remotes/origin/feature/test-feature@{0}: fetch origin: storing head
你想将本地历史与远程历史合并,还是只保留其中一个?
a)如果您想合并它们,则需要先连接2个历史记录。 然后rebase
带--root
是你的朋友,我猜。
--root重新提交可达的所有提交,而不是用一个限制。 这允许您重新分支分支上的根提交。 必须与--onto一起使用,并跳过已包含在(而不是)中的更改。 当与--preserve-merges一起使用时,所有的根提交都将被重写为父代。
http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html
b)如果你想只保留本地修改并删除远程修改:只要删除远程修改:
git push origin :badbranch
让我知道你是否需要更多的澄清。
我通过添加具有相同名称的远程并删除不相似的远程分支来修复它。 我认为更好的解决方案将是一个没有手动删除分支(我已经有我想要使用的存储库和历史记录),但至少我的问题已修复!
如果远程回购已被删除
$ git remote add <same remote name> <url to the repo>
删除不在“新”存储库中的旧远程分支
$ git push <same remote name> --delete <branch name>
上一篇: Git remote overwrite led to two disconnected histories
下一篇: Can't delete branch even though it shows up in git branch