在git

时间:2015-08-25 15:37:41

标签: git git-stash git-commands

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

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

1 个答案:

答案 0 :(得分:6)

  

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

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

  

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

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

  

......我没有遇到这个问题。

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

  

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

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

尝试切换分支是安全的,如果Git警告您“未提交的更改将被覆盖”并拒绝切换分支,则可以隐藏更改并重试。

相关问题