我怎么能藏到一个特定的文件?

可能重复:
如何从多个已更改的文件中只存储一个文件

我怎样才能隐藏一个特定的文件,而将其他目前修改的文件从我将要保存的隐藏文件中删除?

例如,如果git状态给我这个:

younker % gst # On branch master # Your branch is ahead of 'origin/master' by 1 commit. # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: app/controllers/cart_controller.php # modified: app/views/cart/welcome.thtml # no changes added to commit (use "git add" and/or "git commit -a") 

而我只想保存app / views / cart / welcome.thtml,我该怎么做? 像(但当然这不起作用):

 git stash save welcome_cart app/views/cart/welcome.thtml 

编辑:因为混帐2.13,有一个命令来保存特定path到存储: git stash push <path> 。 例如: git stash push -m welcome_cart app/views/cart/welcome.thtml

老解答:

你可以用git stash --patch (或者git stash -p )来做到这一点 – 你将进入交互模式,在那里你将会看到每个被改变的块。 使用n跳过不想保存的文件,当遇到要保存的文件时,使用n跳过,退出并保持其余的文件不变。 a将存储在该文件中显示的大块和其余的人。

不是最人性化的方法,但是如果你真的需要的话,它可以完成工作。

我通常添加索引更改,我不想存储,然后存储–keep-index选项。

 git add app/controllers/cart_controller.php git stash --keep-index git reset 

最后一步是可选的,但通常是你想要的。 它从索引中删除更改。


警告正如在评论中指出的那样,这将所有东西放入存储器中,不pipe是上演还是未上架。 – 保持索引仅仅在索引完成后离开索引。 这可能会导致合并冲突,当你以后popup存储。