【问题标题】:git: Can I stash an untracked file without adding it to the index?git:我可以在不将其添加到索引的情况下存储未跟踪的文件吗?
【发布时间】:2011-03-17 04:39:06
【问题描述】:

一个相关问题How do you stash an untracked file? 的回答是“跟踪文件”。但是,这不适用于我的特殊需求。

我正在尝试使用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

这似乎有效,直到我的工作目录中有未被隐藏的未跟踪文件。一些搜索导致两年前的功能请求:Option to save untracked and/or ignored files in stash,但没有别的。

我应该使用 stash 吗?也许有更好的方法涉及临时分支或其他东西。

【问题讨论】:

    标签: git pre-commit-hook git-stash


    【解决方案1】:

    不,git stash 只会“记录工作目录和索引的当前状态”。因此,存储不会获取您未跟踪的文件。

    按照您的建议,切换到临时分支并在那里跟踪未跟踪的文件似乎是一种合理的方法。

    【讨论】:

    • 我想我对“工作目录”的定义与 git 开发人员的不同。我通过使用 git-checkout-index 到一个临时目录并在那里构建解决了我的问题。但是,如果可能的话,我还是宁愿使用 git-stash。
    • 这绝对是“工作目录”的奇怪定义。我也会考虑将新文件纳入我的工作目录。
    【解决方案2】:

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

    从 git 1.7.7 开始,git stash 接受 --include-untracked 选项以在您的存储中包含未跟踪的文件。

    git stash --include-untracked
    

    或者您可以使用简短的-u 选项。

    git stash -u
    

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 2023-04-01
      • 2010-10-05
      • 2020-11-23
      • 2012-04-30
      • 1970-01-01
      • 2017-12-30
      • 2010-10-25
      相关资源
      最近更新 更多