如何在git fetch之后恢复repo?

时间:2011-06-22 07:41:54

标签: git

更改原始远程URL(已移动)并执行git update后,我发现自己拥有一个每次提交的回购协议branch double(直到我上一次获取之前的点)。但是,gitk显示了一个共同的初始祖先(回购的“开始”)。

文件FETCH_HEAD包含24个条目。是否有任何git命令可以恢复我在获取之前的repo?

小细节信息:我的本地仓库只从一个遥控器提供,并且自己的分支被推送到另一个遥控器。

2 个答案:

答案 0 :(得分:1)

听起来好像回购被移动时,所有历史都丢失或被修改(不同的sha-1哈希意味着git不知道共同的祖先),因为我认为你的意思是git pull而不是git更新。

如果您对任何文件没有任何损失,或者您没有做任何更改(最好先在分支中执行此操作并查看它是否符合您的要求),您可以尝试以下内容:

git checkout -b tmaster
git reset --hard origin/master

现在检查一切是否正确,如果是这样,请删除master分支并将tmaster重命名为master

你所创建的任何分支仍然会有与之关联的旧历史记录,你必须创建新的分支,然后cherry-pick逐个提交你所做的提交,这些提交是在origin的主人之上进行的更改


首先我也会跑

git remote update --prune
git fetch --all

答案 1 :(得分:0)

(优先项目需要很长时间) - 新信息:有人告诉我们新的repo URL的历史已经被重写了。我打开一个更合适的新标题。