如何将未推送的提交代码移至另一个分支?

Nar*_*csu 8 git

所以我有以下情况:

我在本地提交了一些工作,而没有推送到远程存储库。我想将本地代码移到另一个分支,因为如果我拉,将进行一些修改,这些修改将破坏我在本地所做的所有工作。

这是旧分支上“ git status”的输出:

“在分支上,您的分支比'origin /'提前1次提交。(使用“ git push”发布您的本地提交)没有要提交的内容,工作目录更干净“

这是新创建的分支上“ git status”的输出:

“在分支上什么也没提交,工作目录干净”

Idd*_*ohn 11

就我而言,答案是:

  1. 创建一个具有当前状态的新分支:
    git checkout -b new-branch
    
    Run Code Online (Sandbox Code Playgroud)
  2. 返回您要从中删除未推送提交的分支
    git checkout -
    
    Run Code Online (Sandbox Code Playgroud)
  3. 删除未推送的提交
    git reset --hard origin
    
    Run Code Online (Sandbox Code Playgroud)


j4n*_*4nw 8

如果只是一次提交,您只需执行

git reset HEAD~1
git stash
git checkout anotherbranch
git stash pop
Run Code Online (Sandbox Code Playgroud)

如果您想将其放在新的分支中,另一种方法是

git branch newbranch
git reset --hard HEAD~1
Run Code Online (Sandbox Code Playgroud)

  • 完全按照医生的处方!多谢! (2认同)

Sch*_*eis 6

如果在提交后进行了分支,则分支应包含要移动的提交。您可以使用进行验证git log,您应该将提交作为日志中的第一个提交。

在您不再希望进行提交的分支上git reset --hard HEAD~。这将删除分支中的提交并重置分支,以便您现在可以毫无问题地进行提取。(确保您的提交在另一个分支上,因为这样做之后您的提交将消失)。

如果提交不在您的另一个分支上,则可以删除该分支,然后使用来从原始分支再次创建该分支,git checkout -b <branch name>也可以将其樱桃拾取到您的分支中,git cherry-pick <SHA of your commit>从而在分支上复制该提交。然后,您可以按照上述步骤重置原始分支。

  • 我签出到新分支,然后执行“git log”。看起来它与旧分支具有相同的日志,所以总之我不需要采取任何其他操作。 (2认同)