我在github
分叉回购。我将我的fork repo与生成的repo同步,创建了一个upstream
端点,以便命令git remote -v
origin git@github.com:some_repo.git (fetch)
origin git@github.com:some_repo.git (push)
upstream git@github.com:some_repo.git (fetch)
upstream git@github.com:some_repo.git (push)
要同步,我运行了
git fetch upstream;git checkout master;git merge upstream/master
但合并失败了大量的冲突。所以我决定强制合并并运行
git push --force upstream master:master
认为这应该强制从上游主分支进入我的本地主分支。
问题是我误导了,似乎我的分叉仓库的状态已经被推到了远程上游分支上,所以我丢失了上游远程分支上的所有提交,这个曾经超前于我的实际状态分叉回购。如何恢复上游远程分支的实际状态?
答案 0 :(得分:3)
你刚刚做的是用你当地的历史取代远程回购历史,而你却想做相反的事情。
你应该做的是:
upstream/master
但是,由于https://api.github.com/repos/<user>/<repo>/events
已消失,请检查您是否可以在当地git reflog
中看到它。
如果没有,我之前提到过,GitHub会跟踪#34; Does github remember commit IDs?&#34;中的推送事件:通过卷曲git reset --hard old_sha1
git push --force upstream master:master
网址并查找推送事件,您可以找到提交在你自己之前推到掌握。
完成提交后,您可以将本地分支重置为该提交,然后再次推送。
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json().heroes as Hero[])
.catch(this.handleError);
}