git 推力后删除的提交
deleted commits after git push force
我已经在 github
上分叉了回购协议。我将我的分叉回购与创建一个 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
认为这应该从上游主控 b运行ch 强制进入我的本地主控 b运行ch。
问题是我误导了,似乎我的分叉回购的状态已经被推送到远程上游 b运行ch 上,所以我丢失了上游远程 b[=29= 上的所有提交]ch,这个以前是我分叉回购的实际状态。如何恢复上游远程 b运行ch 的实际状态?
您刚才所做的是将远程回购历史替换为您的本地历史,而您的本意恰恰相反。
你应该做的是:
git reset --hard upstream/master
但由于 upstream/master
已经消失,请检查您是否可以在本地 git reflog
.
中看到它
如果没有,我之前提到 GitHub 跟踪“”中的推送事件:通过 curling https://api.github.com/repos/<user>/<repo>/events
url ,并查找推送事件,您可以找到在您自己之前推送到 master 的提交。
提交后,您可以将本地分支重置为它,然后再次推送。
git reset --hard old_sha1
git push --force upstream master:master
我已经在 github
上分叉了回购协议。我将我的分叉回购与创建一个 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
认为这应该从上游主控 b运行ch 强制进入我的本地主控 b运行ch。
问题是我误导了,似乎我的分叉回购的状态已经被推送到远程上游 b运行ch 上,所以我丢失了上游远程 b[=29= 上的所有提交]ch,这个以前是我分叉回购的实际状态。如何恢复上游远程 b运行ch 的实际状态?
您刚才所做的是将远程回购历史替换为您的本地历史,而您的本意恰恰相反。
你应该做的是:
git reset --hard upstream/master
但由于 upstream/master
已经消失,请检查您是否可以在本地 git reflog
.
如果没有,我之前提到 GitHub 跟踪“https://api.github.com/repos/<user>/<repo>/events
url ,并查找推送事件,您可以找到在您自己之前推送到 master 的提交。
提交后,您可以将本地分支重置为它,然后再次推送。
git reset --hard old_sha1
git push --force upstream master:master