git - Git存储一个特定的文件?

  显示原文与译文双语对照的内容

可能重复:
如何只将一个文件保存在多个已经更改的文件中

如何保存一个特定文件,使它的当前已经修改的其他文件退出存储?

例如如果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

时间:

你可以使用 git stash --patch ( 或者 git stash -p ) --进行操作。你将进入交互模式,你将在其中显示每个已经更改的。 使用 n 跳过文件你不想隐藏, y 当你遇到那个你想隐藏,剩下 q 辞职并离开大块 unstashed 。

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

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


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

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


警告就像前面的注释,这将一切都到隐匿处,两个转储,并撤回的。 --keep-index只在存储完成后只留下索引。 这可能会导致在你以后弹出存储时产生合并冲突。

如果当前没有暂存的文件,可以暂时暂存一些文件,然后在。

例如我想恢复所有的文件,但我做了类似的事情:


git add path/to/file/file.as//Add file I want to keep
git checkout -- *.as//revert all unstages. as files
git reset HEAD path/to/file/file.as

...