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

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

工作流程:

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

这是我尝试过的:

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

【问题讨论】:

  • @Albireo manojlds 的副本更合适

标签: git content-management-system gitignore filefilter


【解决方案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

【讨论】:

  • 你只是错过了一些例子。
猜你喜欢
  • 2015-12-30
  • 2017-11-18
  • 2023-03-19
  • 2021-08-15
  • 2010-11-11
  • 2019-12-11
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多