我对一个文件进行了更改,再加上一个新文件,我想在切换到另一个任务时使用git stash将它们保存起来。但是git stash本身只存储对现有文件的更改;新文件仍保留在我的工作树中,打乱了我未来的工作。我如何保存这个未跟踪的文件?


当前回答

假设新的未跟踪文件名为:“views.json”。如果您想通过隐藏应用程序的状态来更改分支,我通常会键入:

git add views.json

然后:

git stash

它会被藏起来。然后我就可以用

git checkout other-nice-branch

其他回答

我可以通过以下方式来隐藏未跟踪的文件:

git stash save "tracked files I'm working on"
git stash save -u "untracked files I'm trying to stash"
git stash pop stash@{1}

最后一个弹出隐藏的跟踪文件,从而只留下未跟踪的文件。

在git版本2.8.1上:以下对我有用。

将已修改和未跟踪的文件保存在不带名称的存储中

git stash save -u

使用名称将已修改和未跟踪的文件保存在存储库中

git stash save -u <name_of_stash>

您可以稍后使用pop或apply,如下所示。

git stash pop

git stash apply stash@{0}

将文件添加到索引:

git add path/to/untracked-file
git stash

索引的全部内容,加上对现有文件的任何未标记的更改,都将被放入存储库。

你如何隐藏未追踪的文件?

git stash --include-untracked

在gitbash中,通过使用命令实现未跟踪文件的隐藏

git stash --include-untracked
# or
git stash -u

http://git-scm.com/docs/git-stash

gitstash从工作区中删除任何未跟踪或未提交的文件。您可以使用以下命令恢复git存储

git stash pop

这将把文件放回本地工作区。

我的经历

我不得不对gitIgnore文件进行修改,以避免.classpath和.project文件移动到远程存储库中。到目前为止,我不能在远程回购中移动这个修改过的.gitIgnore。

.classpath和.project文件对于eclipse很重要,eclipse是我的java编辑器。

首先,我有选择地添加了其余的文件,并提交了暂存。但是,除非修改的.gitIgnore字段和未跟踪的文件(即.project和.classpath)未被隐藏,否则无法执行最终推送。

我用过

git stash

用于隐藏已修改的.gitIgnore文件。

对于存放.classpath和.project文件,我使用

git stash --include-untracked

它从我的工作区删除了这些文件。缺少这些文件会影响我在eclipse中处理工作位置的能力。我继续完成将提交的文件推送到远程的过程。成功完成后,我使用

git stash pop

这将相同的文件粘贴回我的工作区。这给了我在eclipse中处理同一项目的能力。希望这能消除误解。