【发布时间】:2011-01-03 02:55:14
【问题描述】:
我是 Git 新手,有点困惑。我有一个 Master 分支并创建了第二个功能分支。
如果我在我的功能分支中进行更改然后切换到 Master,如果我不提交,我的更改会丢失吗?
stash 在哪里发挥作用,是您在切换分支之前执行的操作(但不想提交)还是只是简单地还原一些更改以便您可以暂时返回到以前的代码?
【问题讨论】:
标签: git git-commit git-stash
我是 Git 新手,有点困惑。我有一个 Master 分支并创建了第二个功能分支。
如果我在我的功能分支中进行更改然后切换到 Master,如果我不提交,我的更改会丢失吗?
stash 在哪里发挥作用,是您在切换分支之前执行的操作(但不想提交)还是只是简单地还原一些更改以便您可以暂时返回到以前的代码?
【问题讨论】:
标签: git git-commit git-stash
除非你清理你的树,否则你不能改变到另一个分支。这是通过提交您的更改、还原它们或将它们保存到存储来完成的。
【讨论】:
git checkout 将在切换分支时“继承”暂存和未暂存的更改,只要更改仅限于在当前分支和新分支中相同的文件(即没有机会如果将更改应用于任一分支,则发生冲突)。此外,可以使用git checkout --merge 强制进行合并尝试,但这可能会导致合并冲突,并且这些冲突可能难以解决(这可能会导致难以返回到结帐前状态)。
您可能不想为此目的使用 stash。
如果你真的想同时在 master 和 feature 分支上开发,我建议克隆你的存储库,在克隆和 master 上工作,然后使用推送和拉取在它们之间移动更改。
如果您经常在它们之间切换,我建议您在切换之前检查;收垃圾没有错; git 使以后很容易解决这个问题。
【讨论】:
stash 按照您的建议通过签入来工作。就像其他任何提交一样,它是存储库中的有效提交。它碰巧 not 被分支 ref 引用,但它被 stash ref 固定。请参阅此处的 DISCUSSION 部分:kernel.org/pub/software/scm/git/docs/git-stash.html