我对一个文件进行了更改,再加上一个新文件,我想在切换到另一个任务时使用git stash将它们保存起来。但是git stash本身只存储对现有文件的更改;新文件仍保留在我的工作树中,打乱了我未来的工作。我如何保存这个未跟踪的文件?
当前回答
要隐藏包含未跟踪文件(尤其是.gitignore中的文件)的工作目录,您可能需要使用以下cmd:
git stash --include-untracked
或者,您可以使用缩写-u来代替--include untracked,或者简单地使用git stash--all来存储所有文件,包括未跟踪和忽略的文件。2018年,这个数字发生了变化,所以请确保您的数字是最新的。
警告:似乎存在(或曾经存在)被忽略目录的内容可能被永久删除的情况。有关详细信息,请参阅此存档网站。
其他回答
我认为这可以通过告诉git文件存在来解决,而不是将文件的所有内容提交到暂存区,然后调用git stash。Araqnid描述了如何实现前者。
git add --intent-to-add path/to/untracked-file
or
git update-index --add --cacheinfo 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 path/to/untracked-file
然而,后者不起作用:
$ git stash
b.rb: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state
你如何隐藏未追踪的文件?
git stash --include-untracked
要隐藏包含未跟踪文件(尤其是.gitignore中的文件)的工作目录,您可能需要使用以下cmd:
git stash --include-untracked
或者,您可以使用缩写-u来代替--include untracked,或者简单地使用git stash--all来存储所有文件,包括未跟踪和忽略的文件。2018年,这个数字发生了变化,所以请确保您的数字是最新的。
警告:似乎存在(或曾经存在)被忽略目录的内容可能被永久删除的情况。有关详细信息,请参阅此存档网站。
将文件添加到索引:
git add path/to/untracked-file
git stash
索引的全部内容,加上对现有文件的任何未标记的更改,都将被放入存储库。
我可以通过以下方式来隐藏未跟踪的文件:
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添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别