从一个分支签出到另一个分支时,Pycharm“保持更改”? [复制]

Posted

技术标签:

【中文标题】从一个分支签出到另一个分支时,Pycharm“保持更改”? [复制]【英文标题】:Pycharm "keeping changes" when checking out from one branch to another? [duplicate] 【发布时间】:2021-11-15 01:17:47 【问题描述】:

我正在学习从命令行使用 git,我一直在 Pycharm GUI 中使用它。

我正在使用 pycharm 处理 my_project 目录,位于分支 my_branch

现在,我想在我的代码中添加一些新功能,并且我想在另一个分支中进行,这样万一我破坏了某些东西,我可以通过简单地删除新分支来中止新功能。

为了创建并切换到我已经运行git checkout -b my_branch_2 的新分支,开始做一些更改(未提交),然后我想回到my_branch,所以我运行git checkout my_branch

此时,正如 Pycharm GUI 通常在尝试从具有未提交更改的分支签出到另一个分支时所做的那样,我希望 git 会问我是否要提交更改或签出并放弃对 @987654326 的更改@ 并切换到my_branch 代码(当用户选择“强制签出”按钮时,Pycharm 会执行后一个选项)。

相反,它切换回my_branch 而不询问任何内容并携带我对my_branch_2 所做的更改,因此最终错误的代码会被带到我的稳定分支!

为什么会这样?

我是否使用了错误的命令git checkout

当我从其 GUI 中选择“强制签出”选项时,我必须运行哪些 git 命令来复制 Pycharm 的行为?

【问题讨论】:

修改后的文件属于工作树,但不属于任何分支。要将它们添加到分支,请检查并提交。 【参考方案1】:

这是git checkout 的预期行为

保留对工作树中文件的本地修改,以便可以提交它们

如果您不希望这些保留,请reset, stash or clean 他们。

所以,相当于命令行上的“Pycharm 的强制签出”(这将删除所有未提交的本地更改并从当前分支切换到my_branch)是

git checkout . && git checkout my_branch

这必须在根目录中运行。

【讨论】:

以上是关于从一个分支签出到另一个分支时,Pycharm“保持更改”? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用 GIT 如何将不同提交中的文件签出到新分支中? [复制]

如何将文件从主分支推送到另一个分支?

git:如何从远程分支获取并合并到本地分支?

Git:如何从远程分支更新/签出单个文件?

如何在 Git 中完全用远程分支替换本地分支?

签出时添加到分支 dev 的文件显示在另一个分支中且未合并 Visual Studio [重复]