GIT - 从提交中排除/忽略文件[重复]

Posted

技术标签:

【中文标题】GIT - 从提交中排除/忽略文件[重复]【英文标题】:GIT -- Exclude / Ignore Files from commit [duplicate] 【发布时间】:2011-10-27 14:12:49 【问题描述】:

我需要忽略 git 中的文件!我不认为忽略实际上是正确的词。我希望文件在 git 中,但我不希望能够对它们进行更改。这对某些人来说可能看起来很奇怪,但是有很多很多情况下我需要这个功能。我现在需要它的一个实例是在将 git 与 CMS 一起使用时;如果没有不断变化的文件,CMS 将无法工作,但我不希望在初始提交后提交这些文件。 (使用 SVN 和 Tortoise 很容易做到这一点)。

工作流程:

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

这是我尝试过的:

    .gitignore -- 文件永远不会进入 git。如果文件已经在 缓存 .gitignore 文件没有任何作用。 /.git/info/exclude -- 与 .gitignore 相同的问题,但仅适用于 本地仓库。 分支 -- 主 => LocalIgnores => 工作分支。当。。。的时候 工作分支与 master 合并,所做的更改来自 LocalIgnores 最终出现在 master 中。此外,当您结帐时 新的分支,被删除的文件被删除而不是被忽略。 第三方文件结构 -- 根目录下的第三方目录 保存所有重要第三方文件副本的节点,以便他们可以 被复制到使用 .gitignore 的工作目录中 文件。 (这个可行,但必须有一个更容易/更好的 解决方案)。

【问题讨论】:

@Albireo manojlds 的副本更合适 【参考方案1】:

这是我来自similar question 的回答。

git update-index 应该做你想做的事

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

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

【讨论】:

太棒了。做到了。我创建了几个 bat 文件,IgnoreLocally.bat 和 UnIgnoreLocally.bat,它们从 .LocalIgnore 文件运行。一键比复制和粘贴大量文件容易得多。谢谢您的帮助。现在让乌龟把它加入他们的东西! 您为什么不将其作为重复项关闭,而不是引用您的答案?关于这件事有很多问题。对于未来的用户来说,这一切都只是噪音。 @manojlds 我不知道有办法标记重复...您是否应该标记:需要注意->其他->而不是写“重复”? @Andy - 旗帜左侧有一个close。在其中选择完全重复。 @manojlds 我还没有那个privilege。【参考方案2】:

另一种解决方案是使用pre-commit 挂钩。详情请见git help hooks

这更难设置:您必须编写一个 shell 脚本来准确表达您想要允许或禁止的内容,这可能意味着您需要对 git 有相当好的掌握。

它更加永久和灵活:使用git update-index 之类的技巧,您可能会不小心忘记运行它等。但是一旦设置了挂钩,您就不必再担心了。

与建议的其他技巧一样,挂钩不会自动在存储库之间传播,但您可以将它们作为常规文件签入,并让每个人都将它们链接到 .git/hooks

【讨论】:

你只是错过了一些例子。

以上是关于GIT - 从提交中排除/忽略文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

忽略已经提交到Git存储库的文件[重复]

如何创建.gitignore文件,忽略git不必要提交的文件

查看 Git 忽略或排除的所有内容的命令? [复制]

git-忽略已提交的文件或目录

忽略 Git 提交 [重复]

git 忽略提交某个指定的文件(不从版本库中删除)