我有一个我和GitHub一起使用的回购。以前,repo只有1个分支(即master)并且与远程仓库完全一致,但是已经完成了2个新的实验工作的本地提交,我决定我想做的是创建一个新的分支这两个提交在" dev"仍然可以在GitHub上作为替代分支访问的分支。
因此,我做了以下事情:
git branch dev # create new branch
git reset --hard HEAD~2 # roll back 2 commits on HEAD
git checkout dev # make dev the active branch
在当地,一切都很好。我现在有两个本地分支:master
(在稳定版本后面是2个提交)和当前实验工作中的dev (HEAD)
。
然而,在GitHub方面,一切都不顺利:我有两个分支,master (HEAD)
和dev
,但它们都完全相同(即最后一次提交在master
分支上,实际上我只想在dev
分支上进行。
总而言之,如果我们调用最新的不稳定提交(开发工作),提交10和稳定提交号8,那么我们有以下内容:
10 - dev
,origin/master
,origin/dev
,origin/HEAD
9
8 - master
所以问题是我如何让origin/master
正确地指向提交8.(而且我对origin/HEAD
在所有这些中的作用感到困惑......)
答案 0 :(得分:2)
如果要更改master
的历史记录,则需要git push -f origin master
才能使GitHub记录主要的新HEAD。 (确保警告任何合作者的变化:他们需要将他们的本地主分支重置为新的HEAD)。
推dev
还不够。
origin/HEAD
引用远程GitHub仓库的HEAD
(应该是origin/master
,除非您通过GitHub repo Admin界面明确更改了它。)