【问题标题】:GIT: How to keep ignored files when switching branches?GIT:切换分支时如何保留忽略的文件?
【发布时间】:2013-03-11 06:48:19
【问题描述】:

我有一个 App.Local.config 文件,每个开发人员都有自己的设置。我不希望这个文件在 GIT 存储库中检查版本,因为每次它都会被其他开发人员更改覆盖。

所以我从 repo 中删除了该文件并将其添加到忽略文件中。但是现在当开发者切换分支时,App.Local.config 会从他们的本地文件系统中删除。

最终我想要的是:

  1. 新的开发者克隆 repo,获取 App.Local.config 的起始版本
  2. dev 对 App.Local.config 进行了更改。 Git 将忽略更改而不是暂存/签入
  3. dev 切换分支,对 App.Local.config 的更改不会丢失,文件不会被删除。

我该怎么做?

谢谢。

【问题讨论】:

  • 如果该文件被正确忽略,则在切换分支时不应触摸它。输入git status时会出现吗?
  • 它只会在第一次更新时被删除。一旦每个人的 repos 都是最新的,该文件将保留并且不会被删除。

标签: git git-branch gitignore


【解决方案1】:

您不仅应该在工作分支中使用git rm --cached App.Local.config,而且还应该在要切换到的分支中使用App.Local.config,否则如果您只使用git rm --cached App.Local.config,则在切换回您工作的分支时会丢失App.Local.config在那个分支中。

【讨论】:

    【解决方案2】:

    可能发生的情况是您从工作区中删除了文件,但没有从索引中删除。如果你这样做了,那么 git 认为删除此文件是一种更改,它将从那时起将其删除。

    要走的路是从索引中删除您不想再跟踪的文件

    git rm --cached App.Local.config
    

    然后将该文件添加到.gitignore 这样做你就不会再遇到文件问题了

    【讨论】:

    • @mswanson 如果文件被忽略,您可以随意切换分支 - 它不会被触及。所以你只有一个问题:为开发人员提供这个文件的模板。但你应该从 git 开始。
    • 如果文件被忽略并且超出索引,则对文件的更改不会丢失并且文件不会被删除
    • @iberbeu 我有同样的问题,但该文件从未在索引中。我用 --orphan 标志开始了一个新分支,然后 git rm --cached 一切,忽略 .gitignore 中的一些文件并提交。当我切换分支时,这些文件消失了,我不知道如何避免这种情况!
    • 如果更改分支后文件消失是因为它们在索引中。我建议你git rm --cached 他们,然后将他们添加到.gitignore。我猜当你提交时,那些文件也提交了。如果情况不同,请打开另一个问题,以便我们在那里讨论
    • @splinter123 查看 Eki 的回答:[stackoverflow.com/questions/15552959/…,简而言之,您应该从所有分支及其所有 .gitignore 中删除该文件,然后它就不会消失。
    【解决方案3】:

    好像这个文件曾经在索引中。所以它的删除改变。您可以将其添加到 .gitignore.git/info/exclude,然后在每台开发人员机器上重新创建它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-04
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      相关资源
      最近更新 更多