GIT – 排除/忽略提交的文件
我需要忽略git中的文件! 我不认为实际上忽略是正确的。 我想要在git中的文件,但我不希望能够提交更改。 对某些人来说,这可能看起来像一个奇怪的事情,但是我需要这个function的有很多很多的例子。 我现在需要的一个例子是在CMS中使用git; 如果文件不断变化,CMS将无法正常工作,但是我不希望这些文件在初始提交后被提交。 (这与SVN和龟很容易做到)。
工作stream程:
- 获取运行该应用程序所需的所有文件。
- 提交时忽略指定的目录/文件。
这是我试过的:
-
.gitignore
– 文件永远不会进入混帐。 如果文件已经在caching中,则.gitignore文件不会执行任何操作。 -
/.git/info/exclude
– 与.gitignore相同的问题,但仅限于本地回购。 - 分支 – master => LocalIgnores => WorkingBranch。 当工作分支与主服务器合并时,从LocalIgnore所做的更改最终会在主服务器上完成。 而且,当您签出其中一个新分支时,删除的文件将被删除而不是被忽略。
- 第三方文件结构 – 根节点上的第三方目录,其中包含所有重要的第三方文件的副本,以便它们可以复制到使用.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
。