GIT – 排除/忽略提交的文件

我需要忽略git中的文件! 我不认为实际上忽略是正确的。 我想要在git中的文件,但我不希望能够提交更改。 对某些人来说,这可能看起来像一个奇怪的事情,但是我需要这个function的有很多很多的例子。 我现在需要的一个例子是在CMS中使用git; 如果文件不断变化,CMS将无法正常工作,但是我不希望这些文件在初始提交后被提交。 (这与SVN和龟很容易做到)。

工作stream程:

  1. 获取运行该应用程序所需的所有文件。
  2. 提交时忽略指定的目录/文件。

这是我试过的:

  1. .gitignore – 文件永远不会进入混帐。 如果文件已经在caching中,则.gitignore文件不会执行任何操作。
  2. /.git/info/exclude – 与.gitignore相同的问题,但仅限于本地回购。
  3. 分支 – master => LocalIgnores => WorkingBranch。 当工作分支与主服务器合并时,从LocalIgnore所做的更改最终会在主服务器上完成。 而且,当您签出其中一个新分支时,删除的文件将被删除而不是被忽略。
  4. 第三方文件结构 – 根节点上的第三方目录,其中包含所有重要的第三方文件的副本,以便它们可以复制到使用.gitignore文件的工作目录中。 (这一个工程,但必须有一个更容易/更好的解决scheme)。

这是我从类似问题的答案。

git update-index应该做你想做的

这将告诉你想开始忽略对文件的更改
git update-index --assume-unchanged path/to/file

当你想再次开始跟踪
git update-index --no-assume-unchanged path/to/file

另一个解决scheme是使用pre-commit钩子。 有关详细信息,请参阅git help hooks

  • 这很难build立:你必须编写一个shell脚本来expression你想要允许或禁止的内容,这可能意味着你需要对git有一个相当好的把握。

  • 它更加永久和灵活:像git update-index这样的技巧,你可以不小心忘记运行它等。但是一旦你设置了一个钩子,你再也不用担心了。

与其他技巧一样,钩子不会自动在仓库之间传播,但是您可以将其作为常规文件进行检查,并让所有人链接到.git/hooks

Interesting Posts