3

我需要做的:我有十个提交在 master 上。我需要将这些提交移至新分支。我一直在定期拉动,但我还没有推动我的工作。我怎样才能将我的十次提交放到一个新的分支中,然后我可以推送?

我已尝试按照此处问题中的步骤进行操作,但它们不起作用。具体来说,当我进行 rebase 时,我最终得到的只是 master 上的提交,而我的新分支上没有。没有任何提交被移到新分支,鉴于问题中提供的步骤,我看不出这怎么可能。

4

3 回答 3

2

据我了解,这就是你所拥有的:

* 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     |
|.------------^
*

这是你想做的吗?

于 2013-06-04T17:29:21.530 回答
0

一种选择是将您的工作推送到新分支:

git push HEAD:branchname

这将在服务器上创建一个新分支branchname,其中包含您当前的工作。- 在这种情况下,它可能会让人感到困惑,因为您的工作仍然在您本地的 master 上。

要做到这一点,您只需将本地主机重置为远程版本:

git reset --hard @{u}

请注意,这将丢弃所有未提交的机会。

然后在 branchname 上工作,你可以这样做git checkout branchname

于 2013-06-04T17:35:18.703 回答
0

只需重命名您的分支并推送它:

git branch -m branchname
git push -u branchname

这里-u更新跟踪分支很重要。

于 2013-06-04T17:38:01.420 回答