git fetch后如何恢复回购?

git fetch后如何恢复回购?,git,Git,在更改了原始远程URL(它已被移动)并执行了git更新之后,我发现自己有一个repo,它的每个提交和分支都是双的(直到我之前的最后一次获取)。然而,gitk显示了一个共同的初始祖先(repo的“开始”) 文件头包含24个条目。是否有任何git命令可以将我的repo恢复为获取之前的状态 小细节信息:我的本地repo feed完全来自一个远程,并且自己的分支被推送到另一个远程。听起来好像当repo被移动时,所有的历史都丢失或修改了(不同的sha-1哈希表示git不知道共同祖先),因为我想你的意思是g

在更改了原始远程URL(它已被移动)并执行了
git更新
之后,我发现自己有一个repo,它的每个提交和分支都是双的(直到我之前的最后一次获取)。然而,gitk显示了一个共同的初始祖先(repo的“开始”)

文件头包含24个条目。是否有任何git命令可以将我的repo恢复为获取之前的状态


小细节信息:我的本地repo feed完全来自一个远程,并且自己的分支被推送到另一个远程。

听起来好像当repo被移动时,所有的历史都丢失或修改了(不同的sha-1哈希表示git不知道共同祖先),因为我想你的意思是git pull而不是git更新

如果您在任何文件方面没有任何损失,或者您没有进行任何更改(最好先在分支中执行此操作,然后查看它是否执行您希望它执行的操作),您可以尝试以下操作:

git checkout -b tmaster
git reset --hard origin/master
现在检查所有内容是否正确,如果正确,请删除
master
分支并将
tmaster
重命名为
master

尽管如此,您所做的任何分支仍将保留与之相关联的旧历史记录,您必须创建新分支,并将您所做的提交(即在origin的主文件上所做的更改)逐个进行


首先我也会跑步

git remote update --prune
git fetch --all

(长期优先项目)-新信息:被告知新回购URL的历史记录已被有意重写。我会用更合适的标题打开一个新主题。

git没有名为update的命令……我运行了远程更新--prune,它删除了几个分支,但主要问题仍然存在。顺便说一句:我在本地回购协议的本地副本上做了这些,消除了风险。也许我应该从我自己的远程repo克隆开始一个新的应用程序,然后从主线repo添加更新。这种方法的缺点是:不知道出了什么问题。关于“如何”在获取后恢复(它实际上是获取,因为我喜欢在合并它之前用gitk检查获取结果)。您能在某处发布git日志的输出吗?如果您所做的只是获取,您应该能够简单地删除这些分支以恢复到以前的状态。我已经尝试删除分支,但我必须进行更彻底的实验-如果忽略了一个分支(fetch_HEAD中列出的分支),这可能会保持很多不变。。。顺便说一句:SHA确实不同。(注意:接下来的几个小时不在办公室…)我首先要寻找的是,当回购协议被移动时,sha发生变化的原因(它们根本不应该发生变化)。如果可以的话,我的建议是从新的来源克隆并从那里开始。这很可能是最干净的解决方案。