Git存储单个未跟踪文件?
题:
我有几个如下所列的编辑文件,也有一些新创建的文件
现在我想db/migrate/20161212071336_add_paranoid_fields.rb
未跟踪的文件(在这种情况下,它是db/migrate/20161212071336_add_paranoid_fields.rb
,但不能db/migrate/20161212071336_add_paranoid_fields.rb
更改后的文件)。
我应该怎么做?
为什么我想存储一个未跟踪的文件
我首先创建了这个文件,然后我意识到我不需要立即(它需要被删除才能让我的程序正常工作); 但将来我可能需要它。
我搜查过的东西(而不是给我一个答案),以及他们没有帮助的原因
stash -p
,但这只会隐藏跟踪的文件。 如果你只有这个未跟踪的文件,你可以这样做:
git add -u
git stash --include-untracked --keep-index
那只会将未跟踪的文件添加到存储中,并将其从工作目录中删除。
如果你有几个未经过检查的文件,并且你只想将这个文件包含到存储中,那么你将不得不提交一个文件,然后存储单个文件,然后重置
git add -u
git commit -m "temp commit"
git add my_file_to_stash
git stash
git reset --hard HEAD^
这里精妙的是,当您稍后恢复存储时,该文件将被添加到索引中。 这可能是一件好事,因为它会提醒你这个文件很重要。
gsts
其他答案中提供的信息,我创建了一个脚本git-stash-selection
,我使用别名gsts
:
#!/bin/sh
#
# Git stash only a selection of files, with a message.
#
# Usage:
# git-stash-selection [<message>] [<paths>...]
message=$1
shift
stash_paths="$*"
git add --all
git reset $stash_paths
git commit --allow-empty -m "temp - excluded from stash"
git add --all
git stash save $message
git reset --soft HEAD^
git reset
我已经提供了有关所用方法的另一个答案的全部细节,以及为什么一些更简单的命令不起作用。
编辑:这可能能够使用此修补程序方法而不是提交进行改进。 或者可能使用另一个藏匿处
存储不提供此功能。 由于你想实现的是将这个文件作为附加开发的一部分,所以最好保存在一个分支中。
脚步:
命令:
git stash
git checkout -b paranoid_fields
git add db/migrate/20161212071336_add_paranoid_fields.rb
git commit
git checkout master
git stash pop
当你想恢复文件时:
git merge paranoid_fields
将退还。
如果你只想看看这个文件:
git show paranoid_fields:db/migrate/20161212071336_add_paranoid_fields.rb
链接地址: http://www.djcxy.com/p/24515.html