如果我在分支A上工作,并且突然需要在分支B上工作,然后才准备在分支A上提交,那么我将我的更改存储在A上,签出B,在那里完成我的工作,然后签出A并应用存储。

如果我在A上工作,我想停止一天的工作,我是否应该保存我的工作,然后在第二天(当我恢复工作时)应用它,或者我应该让工作目录中的文件保持原样——未提交的修改文件?我不明白为什么在这种情况下我需要使用stash,除非有一些安全好处。

还有另一种情况:我在公司和家里都工作。如果当我想回家的时候,我还没有准备好提交,我可以把我的工作藏起来,推送到GitHub,然后在家里把它取出来吗?


当前回答

Stash只是一个方便的方法。由于在git中分支是如此廉价且易于管理,我个人几乎总是喜欢创建一个新的临时分支而不是存储,但这主要是一个品味问题。

如果我发现我在上次提交中忘记了一些东西,并且已经开始在同一分支中处理下一个,那么我就会将它们存储在一个地方:

# Assume the latest commit was already done
# start working on the next patch, and discovered I was missing something

# stash away the current mess I made
git stash save

# some changes in the working dir

# and now add them to the last commit:
git add -u
git commit --amend

# back to work!
git stash pop

其他回答

stash命令将保存自上次提交以来所做的任何更改。在你的情况下,如果你第二天要继续工作,就没有理由把它藏起来。我只会使用stash来撤销您不想提交的更改。

Stash只是一个方便的方法。由于在git中分支是如此廉价且易于管理,我个人几乎总是喜欢创建一个新的临时分支而不是存储,但这主要是一个品味问题。

如果我发现我在上次提交中忘记了一些东西,并且已经开始在同一分支中处理下一个,那么我就会将它们存储在一个地方:

# Assume the latest commit was already done
# start working on the next patch, and discovered I was missing something

# stash away the current mess I made
git stash save

# some changes in the working dir

# and now add them to the last commit:
git add -u
git commit --amend

# back to work!
git stash pop

可以使用以下命令:

保存未提交的更改 git藏 列出您保存的存储 Git藏匿清单 应用/取回未提交的更改,其中x为0,1,2… Git存储应用

注意:

应用一个收藏并将其从收藏列表中删除 Git的stash pop @{x} 应用一个收藏并将其保存在收藏列表中 Git存储应用

两种方法都可以使用,既可以保存并启动,也可以从上游创建一个新分支。Stash是更方便的方法来保存撤销重做你的改变。

如果你在工作副本中有更改(不在staging区域)时点击git stash, git将创建一个存储对象并将其推入存储堆栈(就像你做git checkout—一样)。但是你不会失去变化)。稍后,您可以从堆栈顶部弹出。