藏匿一个文件

问题描述 投票:97回答:5

我希望能够从单个文件中隐藏更改:

git stash save -- just_my_file.txt

以上不起作用。任何替代品?

git git-stash
5个回答
123
投票

我认为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允许的更仔细的跟踪时,真的没有多少额外的工作。


49
投票

你可以用git stash -p(类似于git add -p)以交互方式存储单行。

它不需要文件名,但是你可以用d跳过其他文件,直到你到达你想要藏匿的文件并用那里藏匿所有的变化。


17
投票

最好的选择是暂存除此文件之外的所有内容,并告诉stash使用git stash save --keep-index保留索引,从而存储未分段的文件:

$ git add .
$ git reset thefiletostash
$ git stash save --keep-index

正如丹指出的那样,thefiletostash是唯一一个被藏匿处重置的人,但它也会隐藏其他文件,因此它并不完全是你想要的。


12
投票

如果您不想指定带有隐藏更改的消息,请在双击之后传递文件名。

$ git stash -- filename.ext

如果它是未跟踪/新文件,则必须先将其暂存。

但是,如果您确实要指定消息,请使用push

git stash push -m "describe changes to filename.ext" filename.ext

这两种方法都适用于git版本2.13+


11
投票

万一你使用'git stash'(并且不使用git stash临时存放它)实际意味着“丢弃更改”,在这种情况下你可以使用

git checkout -- <file>

请注意,git stash只是分支和执行操作的快速而简单的替代方法。

© www.soinside.com 2019 - 2024. All rights reserved.