我 fork 了一个存储库,然后做了一些更改,看起来我把所有东西都搞砸了。
我希望从头开始,使用当前的上游/master 作为我工作的基础。
我应该 rebase 我的存储库还是完全删除它?
最佳答案
最简单的解决方案是(使用“upstream
”作为引用原始 repo 分支的远程名称):
git remote add upstream /url/to/original/repo
git fetch upstream
git checkout master
git reset --hard upstream/master
git push origin master --force
(类似于这个GitHub page, section "What should I do if I’m in a bad situation?")
请注意,您可能会丢失在 master
分支 上所做的更改(都在本地,因为 reset --hard
,在远程端,因为 push --force
)。
另一种方法是,如果您想在 master
上保留您的提交,则在当前 upstream/master
之上重播这些提交。
用 git rebase upstream/master
替换重置部分。然后你仍然需要强制推送。
另见“What should I do if I’m in a bad situation?”
一个更完整的解决方案,备份您当前的工作(以防万一)在“Cleanup git master branch and move some commit to new branch”中有详细说明。
另请参阅“Pull new updates from original GitHub repository into forked GitHub repository”以说明“upstream
”是什么。
注意:最近的 GitHub repo 做 protect the master
branch反对 push --force
.
所以你必须先取消保护master
(见下图),然后re-protect it after force-pushing ).
注意:具体在 GitHub 上,有 now (February 2019)删除已 merge 到上游的 pull 请求的 fork repo 的快捷方式。
关于git - 清理 fork 并从上游重新启动它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9646167/