如何将十个提交从主分支移到git的一个新分支?

3
我需要做什么: 我有十个提交在主分支上。我需要将这些提交移动到一个新分支。我一直在定期拉取,但我还没有推送我的工作。我如何将我的十个提交变成一个新的分支,然后再推送呢?
我已经尝试了这里的问题中的步骤,但它们不起作用。具体来说,当我进行rebase时,我最终只得到了主分支上的提交,而没有在我的新分支上。没有提交被移动到新分支,我也不知道按照问题中提供的步骤如何可能实现。
3个回答

2

根据我的理解,这是您目前的情况:

* commit 10 (master)
|
* commit 9
|
...
|              * (origin/master)
* commit 1     |
|.------------^
*

我认为你想要的是在一个新分支上拥有1-10次提交记录。
为了做到这一点,你只需要用分支名称标记该分支,然后将主分支重置为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     |
|.------------^
*

你希望做的是这个吗?


这让我最终找到了解决方案,即:1)检出主分支 2)使用git log获取最近的提交ID 3)变基 4)硬重置HEAD 5)检出最近的提交(进入分离头状态)6)创建一个新分支,提交会自动放入该新分支。 - mmr

0

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

git branch -m branchname
git push -u branchname

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


0

一个选择就是将你的工作推送到一个新的分支上:

git push HEAD:branchname

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

要正确执行此操作,您可以将本地主分支重置为远程版本:

git reset --hard @{u}

请注意,这将丢弃所有未提交的更改。

要在分支名称上工作,您只需执行git checkout branchname即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接