gpt4 book ai didi

默认情况下,GIT 忽略对已提交文件的本地更改

转载 作者:太空狗 更新时间:2023-10-29 14:16:35 25 4
gpt4 key购买 nike

我有一个提交的文件“build.properties”,这个文件必须在我们的项目存储库中,因为它包含重要的构建信息。

有时一些开发人员执行一些本地测试,更改此文件的内容,然后他们错误地提交更改(通过简单地暂存他们所做的所有更改,包括 build.properties)。

现在我想以某种方式忽略对该文件所做的所有本地更改,以避免这种情况不断阻碍构建,例如当开发人员将运行 *git add ** 或 git commit -a,该文件将不会包含在暂存文件中。

我已经做了一些研究,但直到现在我找不到任何与我正在寻找的东西兼容的解决方案,考虑到该操作需要远程应用,例如我可以使用 .git/info/exclude 文件夹,但是每次新开发人员克隆存储库时,他都必须再次设置 .git/info/exclude ,我想避免这种情况。

此外,.gitignore 仅适用于未跟踪文件,如果我将跟踪文件添加到 .gitignore,它根本不会被忽略。我发现有些人建议将 .gitignore 与 git rm --cached 结合使用,然后重新添加文件,但是一旦文件被重新添加到树中,就会继续跟踪更改,还可以从官方 GIT 文档中读取, .gitignore 看起来不适合我的需要。

有什么解决方案吗?谢谢!

更新

我是 SVN 的忠实粉丝,我对 GIT 的了解越多,我就越欣赏 SubVersion。

所以我想,我的问题的答案是 GIT 没有提供任何方法来实现这样的事情......

同意这不是最好的做法,还有其他方法可以实现我所要求的,而无需使用著名的源代码控制工具 GIT 进行管理,但我的意图仍然是我们可以面对的相当普遍的事情许多不同的上下文。

我的意思是 GIT 提供了绕过大多数标准实践和原则的方法,例如我无法更改原则的远程历史记录,但 GIT 给了我 --force 来实现这一点,所以我想知道为什么会这样也没有提供解决我的问题的简单方法。

最佳答案

我明白你想做什么,背后的原因是正当的。但问题是,它与 Git 的分布式和并行特性相矛盾。 Git 被设计成:

Version-control system for tracking changes in computer files and coordinating work on those files among multiple people

如果 Git 正在处理您的文件,它会假定该文件可能已更改并且需要进行跟踪(否则何必使用版本控制系统)。正如您所指出的,可以在本地执行此操作,因为在您自己的计算机上告诉 Git 您不想提交对该文件的更改是一个孤立的决定。尝试在全局范围内这样做基本上就像尝试将 Git 用作一个简单的文件存储系统。

因此,请记住,Git 并非设计用于执行您想要的操作,您可能需要考虑以下几个选项:

  1. 您团队中的所有开发人员必须在本地告诉 Git 他们不想提交对该文件的修改:这是一种解决方法。而这样做的代价是每次克隆 repo 时都必须这样做。如果选择此选项,您可能需要考虑使用 git update-index --skip-worktree <file> (您可以阅读更多关于为什么使用而不是其他选项的信息 here );
  2. 检查 Git 扩展并确定其中之一是否满足您的需求:我从未使用过它,但我知道 Git LFS支持文件锁定。它不是为您尝试做的事情而构建的,但它可能是一个选项;
  3. 改变你解决问题的方法:如果你正在使用 Git 并且你有它无法满足的需求,你可以对抗 Git 或按原样使用它并寻找其他方法做你想做的事。毕竟,Git 对于跟踪事物非常有用,您可能还想在将来更改和提交您的文件。考虑一种方法将您的“默认”属性文件(在 repo 中提交的文件)与您的开发属性文件(可以根据每个开发人员的需要进行更改)分开如何?我不熟悉您的开发环境,但我相信您可以找到一种方法,在没有指定其他文件的情况下使用默认文件,在指定文件的情况下使用特定文件。

关于默认情况下,GIT 忽略对已提交文件的本地更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53667339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com