【问题标题】:gitignore - hide ignored files during checkoutgitignore - 在结帐时隐藏被忽略的文件
【发布时间】:2012-11-25 13:09:46
【问题描述】:

这是我的问题(通过示例步骤):

  • 我有一个 Git 存储库,其中包含两个不同的分支(branchA 和 branchB),目前它们是相同的。
  • 结帐到 branchB 并创建一个新文件“foo.txt”。
  • 将该文件添加到该分支的“.gitignore”,以便在分支B 中成功忽略它。
  • 创建另一个文件“hello.txt”,暂存并提交。
  • 结帐到分支 A。
  • foo.txt 出现在 branchA 中,但 hello.txt 没有。

为什么 foo.txt 出现在 branchA 中而不像 hello.txt 那样被“隐藏”?

从我的角度来看,这很烦人,看起来像是一个错误/功能请求,但 Git 是否被设计成这样?我很惊讶地发现没有其他人抱怨这一点。

【问题讨论】:

    标签: git git-branch gitignore git-checkout


    【解决方案1】:

    foo.txt 没有出现在 branchA 中,它不再被忽略,因为当您签出 branchA 时,您对 .gitignore 的更改(我假设您将这些更改提交给了 branchB)丢失了。 foo.txt 只是一个未跟踪的文件。当您切换到 branchA 时让 foo.txt “消失”表示您希望从工作目录中删除该文件。这与忽略文件非常不同。

    无论您使用 $GIT_DIR/info/exclude 文件检出哪个分支,您都可以指定忽略影响整个存储库的模式。但是,这是您的存储库本地的,因此此文件中指定的忽略模式不会传播到其他存储库。参见 gitignore(5)。

    【讨论】:

      【解决方案2】:

      这不是错误。要了解它的工作原理,您需要了解一些事情。

      • .gitignore 不是“自动”全局应用的。你需要提交它。
      • 任何未提交的文件都将在每个分支中可见。切换分支时,您应该commit该文件,也可以stash它。

      此外,这个问题 以前也有人问过,不过我不怪你没有在搜索中找到它。 Working on two unrelated files in separate git branches

      【讨论】:

      • 我感觉这不是一个错误,很抱歉我之前没有找到它。你能看出它有多烦人吗?我有一些我不想提交的文件(因为它们是特定于操作系统的),但我不希望它们出现在我的所有分支中。我以前从未使用过 stash,但从朋友告诉我的情况来看,这似乎不是理想的解决方案,似乎有点 hacky,但我感谢您的建议(无论如何我都会尝试一下)。
      • 在阅读了您链接的帖子中的答案后,您可以看到克里斯托弗似乎和我一样在思考关于藏匿的问题。我认为这配得上 Git 功能请求的名称。我正在尝试考虑为什么您不希望被忽略的文件在结帐时消失/重新出现,而我真的想不出任何原因。
      • @freshquiz 我知道这可能有点烦人。你没有stash,你总是可以使用commit。请注意,您的 commit 只会更新您的本地克隆,并且您可以在稍后返回分支时随时撤消您的提交。另外,不要担心找不到上一个问题。搜索并不总是完美的。 :)
      • 是的,但我不喜欢提交特定于二进制/操作系统的文件的想法,因此应该被忽略。撤消提交让我很头疼,而且我不能以如此便宜的代价失去我的工作。您不认为这是一个很好的功能请求吗?
      • 我当然不介意拥有该功能,而且我也同意不应提交二进制文件等(即使是在本地)。您可以将这些添加到 .gitignore 看看是否有帮助。
      【解决方案3】:

      快速回答:

      • hello.txt 不是“隐藏的”,它已提交到 branchB,因此在将 branchB 合并或重新设置到 branchA 之前,您不会在 branchA 中看到
      • .gitignore 也是如此。如果你将 .gitignore 提交给了 branchB(我猜你是这样做的),然后签出 branchA,那么,branchA 没有 .gitignore 文件,这就是你看到 foo.txt 的原因。同样,您需要将 branchB 合并或变基到 branchA

      【讨论】:

      • 我已经知道了,但还是谢谢你。无论 branchA 是否具有相同或不同的 .gitignore 文件,我的观点是:我认为忽略文件应该像暂存文件一样在结帐期间消失/重新出现。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2021-08-13
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      相关资源
      最近更新 更多