有人告诉我“ 切勿在回购的分支或任何来自上游的分支上更改主分支。您的主分支将与上游分叉,并且您将无法向上游拉入主分支。本地分支机构。”。这对我来说很有意义。
我将所有提交都提交到了本地master分支。因此,根据以上建议,我现在想保持主人清洁。所以,我签出了master到old_master
git分支
*master
git checkout -b patchv1
现在,我所有的更改都在 patchv1 分支中。
我通过以下命令强制删除master分支
git branch -D master
我以为我先创建孤儿母版,然后再进行git pull
git checkout --orphan master
Switched to a new branch 'master'
git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
git pull remote origin
fatal: 'remote' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
git远程显示来源
* remote origin
Fetch URL: https://giturl/my_org_name/runbooks.git
Push URL: https://giturl/my_org_name/runbooks.git
HEAD branch: master
Remote branches:
custom-patch-1 tracked
此外,当我执行git branch时,它不会显示此新创建的孤立主master分支。它只是列出了我的patchv1分支,我在删除它之前已从master中检出了它。而且,这似乎也不是我当前的分支。
git分支
patchv1
如何重新创建master分支并确保其与远程master同步?
答案 0 :(得分:1)
我认为您走错了路。孤立分支是 new 分支,与原始主分支(远程或本地)没有任何关系。因此,我认为这不是您想要的方式。我最好的建议是:go back to your branch patchv1
。然后,与 remote master同步的最简单方法(签出patchv1
后)就是简单地运行:
git pull -r origin master
这将获取远程分支主服务器的状态,然后将您的patchv1分支重新设置为远程主分支的新位置... ,然后当然,如果您想重新设定基准。如果您想运行合并,请运行相同的操作,但不要使用-r
选项。
现在,您的本地主分支。如果您完全不想使用它,请删除它就可以了。就像您一样,我宁愿让我的本地分支将它们的上游分支设置为远程分支,而不是必须先强制同步本地主节点,然后将更改拉入功能分支....但这是一个问题,我想。
答案 1 :(得分:1)
您无需创建orphan
的{{1}},只需创建master
,然后再创建git checkout master
。
典型的工作流程是在本地git pull
上运行git pull
,以便从master
remote
分支中获取最新信息。然后,您可以根据以下内容创建功能分支:master
,进行工作,然后执行git checkout -b my-feature
,以便您可以打开“拉取请求”以将功能分支合并到master中。
要使功能分支与master保持最新,您始终可以执行git push -u origin my-feature
(或git merge origin/master
,这会将您的提交放在git pull -r origin master
的新提交之上)。