Git远程覆盖导致两个断开连接的历史记录

我对Git相当陌生,所以在知道我想用于开发存储库的工作流和结构之前,我一直在使用它。 我创建了一个本地存储库,我想用它来替换远程存储库。 我目前是唯一使用它的人(虽然我克隆了不同的机器)。

基本上,我创建了一个新的本地存储库,并以我想要的方式得到它。 我强制推送到远程存储库来覆盖旧的,如下所述:我如何选择用本地提交覆盖远程存储库? ...除了我使用URL而不是原点。

然后我添加了远程存储库并检查它是否工作。

$ git remote add origin <url>

我查看了完整的历史记录,并最终得到了这样的结果:

gitk --all

不好了! 所以我删除了遥控器并且没有改变。 现在我有这个独立的历史和不存在的分支。 那么我试过这个:如何从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>
    
  • 链接地址: http://www.djcxy.com/p/26011.html

    上一篇: Git remote overwrite led to two disconnected histories

    下一篇: Can't delete branch even though it shows up in git branch