在git中使用未提交的更改来切换分支

zil*_*anu 2 git git-stash git-commands

我正在我的主分支上工作,并在主分支内部进行一些未提交的更改.我已经创建了一个功能分支,我可以使用该git checkout feature_branch命令切换到我的功能分支.我有几个疑问,我在下面列出:

  1. 当我在主分支中进行更改时,为什么我在分支中看到未提交的更改.如果我在主分支中提交我的更改并切换到我的功能分支,我看不到特定于master的已提交更改.我也期待未提交更改的相同行为.
  2. 我在Git中遇到了stash命令,并且在那里提到如果你在master分支中有任何未提交的更改,并且想要切换到其他分支,git将不允许你,因此你需要将更改存储在master分支然后只切换到开发分支.我没有遇到这个问题.我在这里遗漏了什么,如果是这样,使用stash命令有什么意义?

mea*_*gar 6

如果我在主分支中提交我的更改并切换到我的功能分支,我看不到特定于master的已提交更改.我也期待未提交更改的相同行为.

这不是一个明智的行为.根据定义,未提交的更改不会对分支进行.分支是提交的指针,并且没有与未提交的更改相关联的提交.它们是在你的工作目录中创建的,并没有将它们绑定到任何分支.它们甚至与Git无关.在你提交(或存储)它们之前,Git绝对不会跟踪它们,它永远不会尝试为你管理它们.

我在Git中遇到了stash命令,并且在那里提到如果你在master分支中有任何未提交的更改,并且想要切换到其他分支,git将不允许你,因此你需要将更改存储在主分支......

那是错的.任何分支内都不存在藏匿处.有一个全球性的藏匿处.

......我没有面对这个问题.

只有在这样做会导致您的未提交更改被覆盖时,才会阻止您切换分支.

我在这里遗漏了什么,如果是这样,使用stash命令有什么意义?

如果更改影响了通过切换分支而改变的任何文件,您只需要担心存储更改.如果您对两个分支之间相同的文件进行了修改,则从一个分支切换到另一个分支将不需要存储.如果你的另一个分支上的文件不同,Git将不允许你切换分支,因为这会破坏你未经注册的更改.

尝试切换分支是安全的,如果Git警告您"未提交的更改将被覆盖"并拒绝切换分支,您可以存储更改并重试.