是否可以从git stash中删除单个文件?

时间:2010-06-26 14:24:00

标签: git dvcs git-stash

是否有可能,没有pop整个存储并保存另一个没有此特定文件?

2 个答案:

答案 0 :(得分:2)

简短的回答:不,这不是堆栈的工作方式。您可以执行以下操作以获得您正在寻找的结果。

假设您隐藏了一些其他更改,然后对您的索引进行了一些修改(原始更改),并且您决定在修改时保留这些更改藏匿处:

#verify the state you are in
git stash list
git status

git stash #push work in progress on the stash
git stash list #check which stash you need
git stash show stash@{1} #check the changes in the stash

git stash pop stash@{1} #you're now ready to change your 'other' changeset
# hack hack
git stash #modified 'other' change set pushed on the stash
git stash pop stash@{1} #your 'original changes'

我建议这个工作流程而不是直接尝试修改存储。如果您迷失了藏匿号码,您还可以使用git stash save 'some other changes'

在某些时候(可能比你想象的更近),跟踪真正的分支会更容易。

答案 1 :(得分:1)

您可以在弹出堆栈后尝试将您不想隐藏的文件标记为“未更改”:

git  update-index --assume-unchanged -- /path/to/file

,然后尝试藏匿,检查是否包含所述文件。

git update-index man page

--assume-unchanged
--no-assume-unchanged
  

指定这些标志时,不会更新为路径记录的对象名称   相反,这些选项设置和取消设置路径的“假定未更改”位。

     

当“假定未更改”位打开时,git停止检查工作树文件是否有可能的修改,因此您需要手动取消设置该位以在更改工作树文件时告诉git。
  在对lstat(2)系统调用非常慢的文件系统(例如cifs)处理大型项目时,这有时很有用。

     

此选项还可以用作粗略的文件级机制,以忽略跟踪文件中未提交的更改(类似于.gitignore对未跟踪文件的更改)