我希望能够从单个文件中隐藏更改:
git stash save -- just_my_file.txt
以上不起作用。任何替代品?
我认为stash -p
可能是您想要的选择,但为了防止您将来遇到其他更棘手的事情,请记住:
Stash
实际上只是一个非常简单的替代,只有稍微复杂的branch
套装。 Stash对于快速移动事物非常有用,但是你可以通过分支完成更复杂的事情而不会更加头疼和工作。
# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout master
去做你想做的事,然后简单地rebase
和/或merge
tmpbranch。当你需要进行比stash允许的更仔细的跟踪时,真的没有多少额外的工作。
你可以用git stash -p
(类似于git add -p
)以交互方式存储单行。
它不需要文件名,但是你可以用d跳过其他文件,直到你到达你想要藏匿的文件并用那里藏匿所有的变化。
最好的选择是暂存除此文件之外的所有内容,并告诉stash使用git stash save --keep-index
保留索引,从而存储未分段的文件:
$ git add .
$ git reset thefiletostash
$ git stash save --keep-index
正如丹指出的那样,thefiletostash
是唯一一个被藏匿处重置的人,但它也会隐藏其他文件,因此它并不完全是你想要的。
如果您不想指定带有隐藏更改的消息,请在双击之后传递文件名。
$ git stash -- filename.ext
如果它是未跟踪/新文件,则必须先将其暂存。
但是,如果您确实要指定消息,请使用push
。
git stash push -m "describe changes to filename.ext" filename.ext
这两种方法都适用于git版本2.13+
万一你使用'git stash'(并且不使用git stash临时存放它)实际意味着“丢弃更改”,在这种情况下你可以使用
git checkout -- <file>
请注意,git stash只是分支和执行操作的快速而简单的替代方法。