关于github:git stash不属于任何分支?

git stash does not belongs to any branch?

我正在学习和练习git。我了解到的隐藏信息是,"我正在一个分支上工作,如果我必须结帐到另一个分支,但又不想提交我正在处理的未完成的工作,那么我应该将其存放并结帐到另一个分支。回到隐蔽的分支机构后,我必须"隐藏申请",然后我才能再次处理以前未完成的工作。"那是完全正确的吗?
现在,当我对此进行测试时,我做了一些奇怪的事情。我创建了一个文件并编写了一些内容,然后将其添加到分支" A"中,然后我将其隐藏并检出到主分支并命令" git stash apply",然后将该文件添加到我的分支" A"中并进行了隐藏,我现在在分支中可见。

现在我的问题是,

  • 为什么新文件在master分支中可见?(正如我添加并保存到分支'A'一样)
  • git add(用于未标记文件)不是开始为特定分支标记新文件吗?
  • 隐匿不是意味着为特定分支保存"未完成的标记工作"吗?

很抱歉写了些愚蠢的东西。但我真的很想了解。
谢谢。


Why new file is visible at master branch?, (as i added and stashed it
to branch 'A')

当您执行git stash时,实际上是将存储库的当前状态写入存储库中,因此尚未提交的文件将保存在存储库中。
现在,您做了git stash apply将该状态应用于当前的分支,即分支主节点。因此,该文件显示在master分支中。

Isn't git add(for and unmarked file) means started to mark a new file
for a particular branch?

是的。

FYI

即使在执行添加操作后仍进行存储,无论分支如何,都仍将该文件保存在存储区域中。

Isn't stashing means saving 'incomplete marked work' for a particular
branch?

不,执行git stash不会将其标记为要保存到特定分支,它只会转储存储库的当前状态,而与分支无关。

在此处阅读更多信息


存储区确实保留有关其父级的信息(以显示其更改),但它们不属于特定的分支。这就是为什么可以在分支A上存储某些东西,并将其应用到分支B上的原因。

您可以将存储空间视为可应用的单个补丁程序堆栈。每当您存储某些东西时,该存储便会添加到该堆栈的顶部,并且每当您应用存储时,便会将顶层存储应用于当前分支。由于只有一个堆栈存储,因此您可以将它们应用于任何分支。