需要:更改后更改Git分支

需要:更改后更改Git分支,git,visual-studio-code,Git,Visual Studio Code,有时,在使用VisualStudio代码进行代码更改之前,我会忘记更改分支。我试图在更改后更改我的分支,但得到的响应是“Git:您对以下文件的本地更改将被签出覆盖”。如何将更改提交到需要使用的分支 git stash git checkout <existing branch> git stash apply 在隐藏和应用时要小心,因为如果目标分支中存在类似的编辑,则可能会导致合并冲突 在隐藏和应用时要小心,因为如果目标分支中存在类似的编辑,则可能会导致合并冲突。这里有两种机制 让

有时,在使用VisualStudio代码进行代码更改之前,我会忘记更改分支。我试图在更改后更改我的分支,但得到的响应是“Git:您对以下文件的本地更改将被签出覆盖”。如何将更改提交到需要使用的分支

git stash
git checkout <existing branch>
git stash apply
在隐藏和应用时要小心,因为如果目标分支中存在类似的编辑,则可能会导致合并冲突


在隐藏和应用时要小心,因为如果目标分支中存在类似的编辑,则可能会导致合并冲突。

这里有两种机制

让我从切线开始。这种相关性将进一步显现出来

如果你做了一个cherry pick,git将分析你正在cherry pick的提交的更改,并在当前提交的基础上应用这些更改

作为一个例子,如果你正在挑选的承诺是在文件的底部或中间添加更多的行,Git将尝试在你提交的文件的顶部做完全相同的事情,即使在改变之前的文件是不同的。 现在,让我们回到你想做的事情。您已经对某些文件进行了一些更改,但尚未提交,现在您尝试在提交之前更改所在的分支

单独来看,git似乎可以做与上面相同的事情。git可以识别您所做的更改,并尝试将它们带到您想要的分支上

但这是有区别的。如果cherry pick无法干净地应用您的更改,则最终将导致合并冲突。如果您在尝试修复此合并冲突时出错,则可以中止。然后重新启动,然后重试

但是,由于您尚未提交更改,因此任何此类合并冲突都可能严重影响您所做的更改,直至陷入困境。你不能简单地放弃你所做的,因为你会丢失你的更改,而且git已经通过试图修复合并冲突在一定程度上严重损害了你的文件

所以git不会这么做

如果您有未提交的更改,并尝试切换分支,则只有在两个分支之间更改的文件相同的情况下才能切换分支。如果没有,git将拒绝切换到新的分支,因为任何可能导致的合并冲突都可能严重损坏您的文件

解决方案很简单,您有两种选择:

你可以做一个git隐藏,它实际上会提交你的更改,然后切换分支,然后做一个git隐藏弹出。这将做与git cherry pick完全相同的事情,您可以重新启动合并,您可以重试合并,您可以这样做,因为您知道任何问题都会保留您的秘密,这样您就不会丢失更改。 您可以执行一次实际的提交,然后切换分支,然后执行git cherry pick来完成提交。这将与上面的操作相同,但您必须确保您也清理了其他分支。最终的结果可能是一样的,但在路上,你有责任做正确的事情。
这里有几个机制在起作用

让我从切线开始。这种相关性将进一步显现出来

如果你做了一个cherry pick,git将分析你正在cherry pick的提交的更改,并在当前提交的基础上应用这些更改

作为一个例子,如果你正在挑选的承诺是在文件的底部或中间添加更多的行,Git将尝试在你提交的文件的顶部做完全相同的事情,即使在改变之前的文件是不同的。 现在,让我们回到你想做的事情。您已经对某些文件进行了一些更改,但尚未提交,现在您尝试在提交之前更改所在的分支

单独来看,git似乎可以做与上面相同的事情。git可以识别您所做的更改,并尝试将它们带到您想要的分支上

但这是有区别的。如果cherry pick无法干净地应用您的更改,则最终将导致合并冲突。如果您在尝试修复此合并冲突时出错,则可以中止。然后重新启动,然后重试

但是,由于您尚未提交更改,因此任何此类合并冲突都可能严重影响您所做的更改,直至陷入困境。你不能简单地放弃你所做的,因为你会丢失你的更改,而且git已经通过试图修复合并冲突在一定程度上严重损害了你的文件

所以git不会这么做

如果您有未提交的更改,并尝试切换分支,则只有在两个分支之间更改的文件相同的情况下才能切换分支。如果没有,git将拒绝切换到新的分支,因为任何可能导致的合并冲突都可能严重损坏您的文件

解决方案很简单,你有一个 两种选择:

你可以做一个git隐藏,它实际上会提交你的更改,然后切换分支,然后做一个git隐藏弹出。这将做与git cherry pick完全相同的事情,您可以重新启动合并,您可以重试合并,您可以这样做,因为您知道任何问题都会保留您的秘密,这样您就不会丢失更改。 您可以执行一次实际的提交,然后切换分支,然后执行git cherry pick来完成提交。这将与上面的操作相同,但您必须确保您也清理了其他分支。最终的结果可能是一样的,但在路上,你有责任做正确的事情。
git stash,签出分支,然后git stash apply,最后对其执行通常的git工作流。如果应用的更改被证明正确,请记住git stash放弃隐藏。@t0mm13b成功了!谢谢git stash,签出分支,然后git stash apply,最后对其执行通常的git工作流。如果应用的更改被证明正确,请记住git stash放弃隐藏。@t0mm13b成功了!谢谢-b选项意味着创建一个新分支。没有额外的参数,它在头部创建分支,并且不需要隐藏。OP似乎有一个现有的分支,所以他需要隐藏和no-b版本。没有额外的参数,它在头部创建分支,并且不需要隐藏。似乎OP有一个现有的分支,所以他需要隐藏和否--b版本。git stash pop是否与组合的git stash apply和git stash drop做相同的事情?@JacobRoberts:是的,pop=apply&&drop:apply,然后如果git认为结果是好的,就放弃。这通常很好,但我个人更喜欢将它们分开,直到我认为结果很好,因为Git就是gitty-git stash pop是否与git stash apply和git stash drop的组合做相同的事情?@jacobrorts:yes,pop=apply&&drop:apply,然后如果git认为结果是好的,就放弃。这通常很好,但我个人更喜欢将它们分开,直到我认为结果很好,因为Git就是gitty-
error: Your local changes to the following files would be overwritten by checkout:
    README.md
Please, commit your changes or stash them before you can switch branches.
Aborting