【问题标题】:Managing local changes in git I never want to commit在 git 中管理本地更改我不想提交
【发布时间】:2020-05-06 04:59:21
【问题描述】:

所以我有我已经更改的文件版本,这些都是非常个人化的更改(例如,为 javascript 构建关闭缩小)我永远不会提交。 但我确实想让它保持开放状态,以便随着其他人的变化进行更新。

目前我每次更新工作区时都必须进行堆栈保存,这变得非常烦人。

一定有办法做到这一点,请问是什么方法?

编辑

我仍然希望在执行 git pull 时反映其他人的更改,所以我不能简单地忽略这些文件。

编辑 2 我是一名承包商,不能开始告诉他们改变他们组织 git repo 的方式。我明确更改的文件是 gruntfile.js 一个构建文件。

【问题讨论】:

  • 您是否希望在执行 git pull 时更新这些配置文件。两种方式都有可能,两种方式都比较困难。
  • 我会从 git 中删除文件并从 repo 中忽略它们。然后,如果有人在其他地方更新了这些文件,则需要传达这些更改。
  • @TimBiegeleisen 我确实希望更新它们。
  • @evolutionxbox 他​​们已经在 git 中了。我是这家公司的承包商,所以无法控制他们希望如何做事。如果我设置 'git ignore' 则没有通信,因为每个人都希望更改会通过 git pull 自动发生。
  • @caramba 感谢您贬低我。我指的是 OP 希望保留最初看起来像配置文件的“个人更改”。

标签: git


【解决方案1】:

假设您有一个名为myConfig.yml.dist(分发的dist)的配置文件,所有人都在其中进行更改并将它们推送到版本控制系统。

但是假设您拥有数据库密码,该密码必须在myConfig.yml 中,但您永远不想将密码推送到版本控制系统。但是您需要在本地使用它才能使您的应用程序正常工作。此外,您的本地数据库密码可能与实时运行的密码不同。

所以诀窍是每个人都忽略了myConfig.yml,所以你的.gitignore 文件应该包含一行内容

/config/myConfig.yml

但是如果有人添加了一个新参数,他必须将它添加到myConfig.yml.dist 文件中。他会承诺并推动它。因为每个人都需要知道它。但是您在myConfig.yml.dist 中只有带有虚拟数据和/或 cmets 的密钥。所以基本上你可以将myConfig.yml.dist 复制到myConfig.yml 添加正确的密码,然后你的应用程序就会运行。

【讨论】:

    【解决方案2】:

    gitignore 文件指定了 Git 应该忽略的故意未跟踪的文件。如果您在存储库中创建一个名为 .gitignore 的文件,Git 会在您进行提交之前使用它来确定要忽略的文件和目录。

    导航到您的 Git 存储库的位置并创建一个 .gitignore 文件(如果之前未创建)。添加要从提交中取消跟踪的文件夹名称或文件名。 .gitignore 文件示例

    vendor
    css/main.css.map
    

    这里 vendor 是文件夹,main.css.map 是文件。现在它将在提交期间忽略“供应商”和 main.css.map。

    .gitignore 文件应提交到您的存储库中,以便与克隆存储库的任何其他用户共享忽略规则。

    【讨论】:

    • 现在它会在提交期间忽略 'vendor' 和 main.css.map。 -- git commit 不关心 ignore filesgit statusgit addgit rm 使用它们。
    • 他们已经有一个版本控制中的 .gitignore 文件,所以如果我将文件添加到其中,我只需将问题移至 .gitignore 文件。
    【解决方案3】:

    如果配置文件允许从其他配置文件导入,那么您可以创建两个配置,如main.configpersonalized.config。并在main.config 中导入personalized.config

    之后,您可以在.gitignore 文件中添加personalized.config。 这样,main.config 将包含应与所有人一起发送的所有配置,personalized.config 将仅包含特定于您的配置。

    确保在适当的位置添加 import 语句,可能是在 main.config 文件的末尾。

    我在python文件中定义config时使用过。

    【讨论】:

    • 对不起,我不是专门指这种配置文件,我在配置文件的类别中包括了 ant 文件、maven poms、grunt 文件等。
    【解决方案4】:

    我还没有尝试过,但你不能有一个本地分支来完成你的“永远不会被推送”的工作,然后撤消合并提交中的更改到 master 吗?

    然后...您有这个工作分支可以继续从 master 拉取并提交,但您必须将它合并到 master 并从 master 推送——我想——请确认是否有人知道 1)你必须推送来自 master,2) 未来从 master 拉取不会删除本地更改。

    【讨论】:

      猜你喜欢
      • 2017-11-01
      • 2017-09-02
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 2015-12-04
      • 1970-01-01
      • 2012-05-08
      相关资源
      最近更新 更多