我需要做的:我有十个提交在 master 上。我需要将这些提交移至新分支。我一直在定期拉动,但我还没有推动我的工作。我怎样才能将我的十次提交放到一个新的分支中,然后我可以推送?
我已尝试按照此处问题中的步骤进行操作,但它们不起作用。具体来说,当我进行 rebase 时,我最终得到的只是 master 上的提交,而我的新分支上没有。没有任何提交被移到新分支,鉴于问题中提供的步骤,我看不出这怎么可能。
我需要做的:我有十个提交在 master 上。我需要将这些提交移至新分支。我一直在定期拉动,但我还没有推动我的工作。我怎样才能将我的十次提交放到一个新的分支中,然后我可以推送?
我已尝试按照此处问题中的步骤进行操作,但它们不起作用。具体来说,当我进行 rebase 时,我最终得到的只是 master 上的提交,而我的新分支上没有。没有任何提交被移到新分支,鉴于问题中提供的步骤,我看不出这怎么可能。
据我了解,这就是你所拥有的:
* commit 10 (master)
|
* commit 9
|
...
| * (origin/master)
* commit 1 |
|.------------^
*
我认为您要问的是在新分支上提交 1-10 次。
为此,您只需用分支名称标记分支,然后将 master 重置为 origin/master 的名称。
所以:
git checkout master # your current latest set of changes (commit 10)
git branch feature # the name of your branch
git reset --hard origin/master # sets master to point to origin/master
git pull --rebase # updates master with origin/master
git checkout feature && git merge master # updates feature branch with what is on origin/master
这将最终得到:
* commit 11 (feature) merge commit
|^------------.
* commit 10 |
| ...
...
| * (master, origin/master)
* commit 1 |
|.------------^
*
这是你想做的吗?
一种选择是将您的工作推送到新分支:
git push HEAD:branchname
这将在服务器上创建一个新分支branchname
,其中包含您当前的工作。- 在这种情况下,它可能会让人感到困惑,因为您的工作仍然在您本地的 master 上。
要做到这一点,您只需将本地主机重置为远程版本:
git reset --hard @{u}
请注意,这将丢弃所有未提交的机会。
然后在 branchname 上工作,你可以这样做git checkout branchname
。
只需重命名您的分支并推送它:
git branch -m branchname
git push -u branchname
这里-u
更新跟踪分支很重要。