2

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

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

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

$ git remote add origin <url>

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

gitk——全部

不好了!所以我删除了遥控器,没有任何变化。现在我有这个独立的历史和不存在的分支。所以然后我尝试了这个:如何从 Git 中删除无效的远程分支引用?

它没有帮助。

$ git remote show

显示为空。有什么办法可以撤消这个吗?我不明白仅仅添加一个遥控器会如何严重破坏我的工作目录!

编辑:我刚刚注意到旧历史中有一个分支与新历史不同。另外,我在添加远程存储库后确实进行了获取。我可以看到旧的分支

$ git reflog --all

它显示为

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

2 回答 2

1

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

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

如果您需要更多说明,请告诉我。

于 2013-01-30T18:28:45.380 回答
0

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

  1. 如果远程仓库被删除

    $ git remote add <same remote name> <url to the repo>
    
  2. 删除不在“新”存储库中的旧远程分支

    $ git push <same remote name> --delete <branch name>
    
于 2013-01-30T17:33:34.107 回答