git - tag本地 - sourcetree打tag




我怎样才能保存一个特定的文件? (2)

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

我如何隐藏一个特定的文件,将其他目前修改的文件从我将要保存的隐藏文件中删除?

例如,如果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,有一个命令来保存特定路径到存储: git stash push <path> 。 例如: git stash push -m welcome_cart app/views/cart/welcome.thtml

老问题答案:

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

不是最方便用户的方法,但是如果你真的需要它,工作就完成了。


我通常添加索引更改,我不想隐藏并保存--keep-index选项。

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

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

警告正如在评论中指出的那样,这将所有东西放入存储器中,不管是上演还是未上架。 - 保持索引仅在索引完成后离开索引。 当您稍后弹出藏匿处时,这可能会导致合并冲突。





git-stash