在某些地方您写道您有未跟踪的更改,而在某些地方您则写道您有未暂存的更改。这是两件不同的事情,应该以不同的方式处理。如果您已跟踪但未暂存的更改,则应该git stash在签出新分支之前进行更改,并git stash pop在合并A到新分支之后进行更改。
对于未跟踪的更改,确保它们也被隐藏然后将它们应用到新分支的另一种方法是git stash与 flag 一起使用-u,它也隐藏未跟踪的更改。这种情况下的流程是:
git branch newBranch master
git stash -u
git checkout newBranch
git merge A
git stash pop
git add && git commit
Run Code Online (Sandbox Code Playgroud)
我相信您想要达到的状态如下:
master分支保持不变A保持不变B从 master 分支出来的新分支,其中包含分支中已提交和未跟踪的更改A首先,请注意:当您用于git checkout签出不同的分支或提交时,或者当您执行操作其他分支的命令时,您之前签出的分支/提交上提交的任何内容都不会丢失,您可以在任何时候git checkout再次使用。此外,未跟踪的文件不会被修改,除非它们在您正在签出的提交/分支中被跟踪。
现在,我将使用以下命令:
git branch newBranch master在分支外创建一个新分支master。git checkout newBranch签出新创建的分支。请记住,除非在新分支上跟踪未跟踪的文件,否则不会修改它们,从您的描述中我了解到它们不是。还要记住,在分支上提交的任何内容都A将保留在那里,并且不会因切换到另一个分支而丢失。git merge A将分支中提交的更改合并A到新分支。git add并git commit添加未跟踪的更改并将其提交到新分支。最后,您可以继续在新分支上工作,或者如果您想返回分支A,您可以执行git checkout A返回。请注意,由于在分支上未跟踪的更改A现在在分支上进行了跟踪B,因此如果您再次更改它们并签出,B您将获得新更改之前的版本A。
小智 5
git stashgit checkout mastergit checkout -b <newbranchname>此时,我对您想要将当前分支提交到哪里感到有点困惑。我假设您正在尝试将其提交到您在 #3 中创建的新分支。
git merge <initialbranch>git stash pop| 归档时间: |
|
| 查看次数: |
48952 次 |
| 最近记录: |