将本地提交的更改移动到新分支并推送

21

我当前在 master 分支上。执行 git status 命令后,提示信息为:

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 13 commits.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean

所以这13个提交只存在于我的本地机器上。问题是这13个提交现在应该进入我要创建并推送到服务器的新分支中。我尝试过查看rebase但被告知

$ git rebase origina/master
fatal: Needed a single revision
invalid upstream origina/master

如何将这些更改推送到一个新分支而不搞乱主分支?

仅供澄清,这不是重复的问题:
把已提交但未推送的更改移动到新分支无论我做了什么,它都不起作用。
或者
Git:如何将自上次提交以来的更改移动到新分支也没有帮助。


请重新表述问题以解释为什么最后一个链接并不是你的问题的解决方案,因为它肯定适用于你提出的那个问题。 - Balog Pal
在问题中,您说“这些13个提交现在应该去”。如果您只想要一个或几个,请直接提出请求;如果您已经有了您的提交,那么在git中很难丢失任何内容。但是,由于它允许多种方式和多种方法,因此您应该在提问时非常精确。也许如果您描述了最终状态,我们会更好地理解。 - Balog Pal
是的,我想提交所有13个更改,但该链接仅提供了最新更改的解决方案。我不知道其中的区别。 - Quillion
我已经尝试过了,不幸的是这些更改已经提交到了两个分支 -_-ll 现在我们只能想办法从主分支中删除它们。 - Quillion
你肯定曾经推送过主分支,要撤销重置主分支,按照所写的使用 push --force 命令。 - Balog Pal
显示剩余4条评论
1个回答

59

只需执行git checkout -b yourbranch并推送即可。

然后重置主分支为origin/master。

顺序:

git checkout -b mybranch
git push
git checkout master
git reset --hard origin/master

那么:1)git checkout -b mybranch2)git push3)git reset --hard origin/master就这样了吗? - Quillion
4
在执行第3步之前,请使用命令"git checkout master"切换到主分支。 - Balog Pal
警告:这个序列对我没有起作用。与其将“13”个新的本地提交移动到一个新分支并保持远程不变,至少我想要的一些最近更改出现在主分支(或者在我的情况下是develop分支)中。我认为这不是OP的意图。 - Bryan P
1
@BryanP 我猜可能是因为git push不仅推送当前检出的分支,还推送其他分支(https://dev59.com/mnNA5IYBdhLWcg3wdtv5) - Matthias
第二步可能需要改为 git push origin mybranch - Muhammed Ibrahim

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