【问题标题】:git push when there are untracked files当有未跟踪的文件时 git push
【发布时间】:2020-05-14 12:32:44
【问题描述】:

如果我还有未跟踪的文件,我可以 git push 到存储库吗?

注意:我不是询问如何将未跟踪的文件添加到舞台并在推送它们之前提交它们。

我不想要那些未跟踪的文件,它们是不受欢迎的,并且刚刚在测试后出现。它们应该被忽略(我想 .gitignore 文件不正确)。

所以我的问题是,即使在执行git status 之后我看到有未跟踪的文件,我仍然可以将我的文件推送到存储库吗?

【问题讨论】:

  • 你试过了吗?未跟踪的文件是 git 不知道/不关心的东西(除了在git status 中报告它们存在)。当你这样做时请自行回答:)
  • 很明显我现在无法访问机器,因此我要求分享知识
  • 与许多开发人员一样,即使我不在电脑前,我也会想到我正在从事的项目。我最近的情况就是描述的情况,我一直在想该怎么办。我在手机中进行了搜索,但没有得到答案。所以我直接问在那种情况下我是否可以 git push 。我可以吗?

标签: git gitlab


【解决方案1】:

如果您不关心未跟踪的文件,您应该查看git clean。这将有助于清理您未跟踪的文件 - 否则它们将继续显示在您的 git 状态中,直到您对它们进行处理。

它们不会影响推送——只有当你在提交和推送之前使用 git add . 并忘记那些未跟踪的文件时,我才会看到它会影响推送——那么它们就会成为你提交的一部分。

【讨论】:

    【解决方案2】:

    git push 命令推送提交,而不是文件。提交当然是包含文件,所以无论提交中的文件是什么,都在其中——但未跟踪的文件根据定义是当前不是的文件 在 Git 的 index 中。 Git 从它的索引中做出新的提交,而不是从你的工作树中。因此,如果这些文件现在不在 Git 的索引中,那么它们之前可能不在 Git 的索引中,因此也不会在任何早期提交的文件中。

    (您可以使用 git ls-tree -r 检查任何给定提交中的完整文件集:为该提交提供标识符,例如,master 之类的分支名称,或带有相关后缀的分支名称,例如 @987654324 @ 或原始哈希 ID。但是,如果您在工作时没有刻意调整 Git 的索引,那么它们现在不在索引中的事实通常足以表明您不需要检查。它检查不会有坏处,但通常使用git log --name-statusgit log --raw 更容易检查。--raw 输出曾经由git whatchanged 获得,早在Git 的早期,它实际上仍然是其中之一我喜欢的风格。)

    【讨论】:

      【解决方案3】:

      是的,您只能推送您之前提交的文件。您可以保留未跟踪的文件并稍后对其进行调整。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-07-21
        • 2017-03-15
        • 2014-03-23
        • 2015-01-11
        • 2012-01-18
        • 2022-01-01
        • 2021-02-13
        相关资源
        最近更新 更多