我在GitHub上有一个仓库,只有一个名为 master
的分支,我一直在我的本地仓库中工作。但由于担心它们会破坏东西,我停止将提交推送回 GitHub 上的 master 分支了。现在我有很多提交在我的本地仓库中,我想将它们推送回 GitHub。
然而,与其将提交推送回 master 分支,我更愿意在 GitHub 上创建一个新分支 (development
) 并将所有本地提交推送到该分支上(只有在进行更好的测试后,我才会将其合并回 master 分支)。
这样做的简单方法是什么?
我在GitHub上有一个仓库,只有一个名为 master
的分支,我一直在我的本地仓库中工作。但由于担心它们会破坏东西,我停止将提交推送回 GitHub 上的 master 分支了。现在我有很多提交在我的本地仓库中,我想将它们推送回 GitHub。
然而,与其将提交推送回 master 分支,我更愿意在 GitHub 上创建一个新分支 (development
) 并将所有本地提交推送到该分支上(只有在进行更好的测试后,我才会将其合并回 master 分支)。
这样做的简单方法是什么?
在主分支上:
git checkout -b newbranch
或者像下面建议的那样,只需执行 git branch newbranch
来创建新分支而不切换到它。
这将创建一个分支,其当前提交记录为主分支的最新提交记录。创建完成后:
git checkout master
然后执行:
git reset --hard <commit_hash>
其中的 <commit_hash>
应替换为您想要还原主分支的提交 ID。
现在,您可以切换到新分支并将其推送到远程。
git checkout newbranch
git push origin newbranch
git branch --set-upstream newbranch origin/newbranch
命令来设置追踪分支 :) - hobbsgit checkout origin/master
(或者是上面评论中Emmanuel的建议)来代替使用commit-hash进行硬重置?如果可以,那么我是否需要先删除我的本地Master分支(并且我是否可以通过切换到我的新开发分支并使用git branch -d master
来删除它)?再次感谢。 - Herbert Sitzorigin/master
(或者等价的对象名称)作为<commit_hash>
。其次,如果你想将本地的master
移动到origin/master
所指向的位置,那么最好直接执行(因为删除并重新创建它也会重启它的引用日志)。如果master
已经被检出,那么可以使用git reset --hard origin/master
。如果没有被检出,则可以使用git branch -f master origin/master
。使用git checkout origin/master
会将提交检出为一个分离的HEAD,这可能不是你想要的。 - Chris Johnsen