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 - 从提交中排除/忽略文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章