git:我可以将未跟踪的文件存储在stash中而不将其添加到索引中吗?

9
一个相关的问题如何隐藏未跟踪的文件?的回答是“跟踪该文件”。然而,这对我来说不起作用。
我正在尝试使用git stash save --keep-index隐藏所有未在索引中的内容,以便我可以在我的预提交钩子中验证索引。这个想法来自于git-stash手册页面上的“测试部分提交”的例子。我想确保我实际提交的内容通过了测试,而不仅仅是工作目录中的内容。以下是我目前的进展:
echo "Running tests on the staging area."
git stash save --keep-index
# configure, build, run tests, clean
git stash pop; true

这似乎可以解决问题,直到我在工作目录中有未跟踪的文件没有被存储。一些搜索结果显示两年前提出了一个功能请求:保存未跟踪和/或被忽略的文件的选项,但没有其他信息。
我是否应该使用贮藏?也许有更好的方法,比如使用临时分支等。
2个回答

14

如我在相关问题中所回答的,现在的答案是肯定的:

自 git 1.7.7 起,git stash 命令接受 --include-untracked 选项,以将未跟踪的文件包括在您的暂存中。

git stash --include-untracked

或者你可以使用短选项-u

git stash -u

2
不,git stash 只会“记录工作目录和索引的当前状态”。因此,藏匿不会捡起您的未跟踪文件。
像您建议的那样切换到临时分支并跟踪未跟踪的文件似乎是一个合理的方法。

1
我想我的“工作目录”定义与git开发人员的不同。我通过使用git-checkout-index到临时目录并在那里构建来解决了我的问题。然而,如果可能的话,我仍然宁愿使用git-stash。 - James Marble
这绝对是一个奇怪的"工作目录"定义。我也认为新文件应该是我的工作目录的一部分。 - allyourcode

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接