git强制后删除的提交

git强制后删除的提交,git,github,merge,push,Git,Github,Merge,Push,我在github上进行了回购。我将我的分叉回购与生产回购同步,创建了一个上游端点,以便命令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) 为了同步,

我在github上进行了回购。我将我的分叉回购与生产回购同步,创建了一个
上游
端点,以便命令
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推送——强制上游主机:主机

认为这应该迫使上游主分支进入我的本地主分支


问题是我误导了,似乎我的叉式回购的状态被推到了远程上游分支上,因此我丢失了上游远程分支上的所有承诺,这一个以前比我的叉式回购的实际状态提前。如何恢复上游远程分支的实际状态

您刚才所做的是用您的本地历史替换远程回购历史,而您的本意恰恰相反

你应该做的是:

git reset --hard upstream/master
但是由于上游/master已经消失,请检查您是否可以在本地网站上看到它

如果没有,我在前面提到GitHub在“”中跟踪推送事件:通过卷曲
https://api.github.com/repos///events
url,并查找推送事件,您可以在自己的事件之前找到提交推送到主事件

一旦您完成了提交,您就可以将本地分支重置为该分支,然后再次推送

git reset --hard old_sha1
git push --force upstream master:master

感谢您的回复:事实上,这很奇怪,但我只是简单地进行了一次
git添加。
git提交…
,然后我恢复了所有9次新提交。但有两件事很奇怪:1)如果我运行
git reset--hard HEAD^
,我会返回9次提交。这9次提交似乎对应于1次提交。第二,在工作、删除一些文件、添加一些新工作和提交之后,我试图压缩其中的一些文件,然后我收到一条消息
警告:无法合并二进制文件:…-错误:无法应用SHA1_commit…
,其中二进制文件正是我删除的文件。你有什么想法吗?@Newben这可能是一个合并提交(你第一次拉的时候做的)@Newben如果可以,检查reflog并将你的分支重置为上游/master的sha1。我试图卷曲这个
https://api.github.com/repos///events
我发现
消息:“找不到”
。顺便问一下,如何使用git reflog检查分支
上游/master
status@Newben您确实用上游回购的url替换了用户和回购,对吗?