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

时间:2013-01-30 16:54:52

标签: git

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

基本上,我创建了一个新的本地存储库并按照我想要的方式获得它。我强迫推送到远程存储库以覆盖旧的,如下所述: How can I choose to overwrite remote repository with local commits? ...除了我使用的是URL而不是原点。

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

$ git remote add origin <url>

我查看了完整的历史记录,最后得到了类似的结果:

gitk --all

哦不!所以我删除了遥控器,没有任何变化。现在我有这个独立的历史和分支不存在。所以我试过这个:How do you remove an invalid remote branch reference from Git?

没有用。

$ git remote show

显示为空。有没有办法撤消这个?我不知道如何添加遥控器会严重破坏我的工作目录!

编辑:我刚注意到旧历史上有一个分支与新分支不同。此外,我在添加远程存储库后进行了提取。我可以在

中看到旧分支
$ git reflog --all

并显示为

16903f4 refs/remotes/origin/feature/test-feature@{0}: fetch origin: storing head

2 个答案:

答案 0 :(得分:1)

您想将本地历史记录与远程历史记录合并,还是仅保留其中一个历史记录?

a)如果要合并它们,则需要首先连接2个历史记录。然后rebase--root是你的朋友,我猜。

  

- root Rebase所有可以访问的提交,而不是使用。这允许你重新定义根提交   在一个分支上。必须与--onto一起使用,并且已经跳过更改   包含在(而不是)中。一起使用时   使用--preserve-merges,所有root提交都将被重写    作为父母代替。

http://www.kernel.org/pub/software/scm/git/docs/git-rebase.html

b)如果你想保留,比如只保留本地更改并删除远程更改:只需删除远程参考:

 git push origin :badbranch

如果您需要更多说明,请与我们联系。

答案 1 :(得分:0)

我通过添加具有相同名称的遥控器并删除不相似的远程分支来修复它。我认为一个更好的解决方案是没有手动删除分支(我已经拥有我想要使用的存储库和历史记录)但至少我的问题已得到解决!

  1. 如果远程仓库被删除

    $ git remote add <same remote name> <url to the repo>
    
  2. 删除&#34; new&#34;中的旧远程分支。存储库

    $ git push <same remote name> --delete <branch name>