藏匿一个文件

时间:2012-09-14 08:42:13

标签: git git-stash

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

git stash save -- just_my_file.txt

但上述方法无效。任何替代方案?

5 个答案:

答案 0 :(得分:115)

我认为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允许的更仔细的跟踪时,

答案 1 :(得分:46)

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

它没有文件名,但您可以跳过其他文件 d ,直到您到达要隐藏的文件并用 a 。

答案 2 :(得分:16)

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

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

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

答案 3 :(得分:11)

万一你使用'git stash'时实际意味着'丢弃变更'(并且实际上并没有使用git stash暂时存储它),在这种情况下你可以使用

git checkout -- <file>

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

答案 4 :(得分:4)

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

$ git stash -- filename.ext

如果它是未跟踪/新的文件,则必须先将其登台。

但是,如果您要做要指定一条消息,请使用push

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

这两种方法都可以在git 2.13+版本中使用