如何对每个新的Git分支应用相同的小更改?

如何对每个新的Git分支应用相同的小更改?,git,Git,我正在处理一个Django项目,该项目的\uuuu init\uuuuuuuupy.py文件包含一个变量DOCUMENTS\u CACHE=True,该变量会在运行报表时缓存报表的输出。这是在dev和master分支中声明变量的方式 当我在本地开发和测试时,我经常需要多次运行报告,重复使用相同的输入,以确保输出是变化的。为了避免缓存报告(并且在第一次运行后看到报告输出,尽管进行了更改),我设置了DOCUMENTS\u CACHE=False 对于我使用的每个功能,我都会根据dev分支的当前状态使

我正在处理一个Django项目,该项目的
\uuuu init\uuuuuuuupy.py
文件包含一个变量
DOCUMENTS\u CACHE=True
,该变量会在运行报表时缓存报表的输出。这是在
dev
master
分支中声明变量的方式

当我在本地开发和测试时,我经常需要多次运行报告,重复使用相同的输入,以确保输出是变化的。为了避免缓存报告(并且在第一次运行后看到报告输出,尽管进行了更改),我设置了
DOCUMENTS\u CACHE=False

对于我使用的每个功能,我都会根据
dev
分支的当前状态使用Git创建一个新分支,因此我总是使用
DOCUMENTS\u CACHE=True
启动一个新功能,并且我总是需要手动将其更改为
DOCUMENTS\u CACHE=False

我无法将此更改推到
dev
,因为它会给我的同事带来麻烦

问题

如何对我创建的每个新分支进行这一小改动?如何避免意外地添加、提交和推送此文件?下面是我知道的两个选择,但都依赖于我记住要做的事情。当我在本地开发时,是否有一种编程方式来替换每个新分支中文件的
dev
版本,然后在推之前重新引入文件的
dev
版本

  • 在开始时手动进行更改,并在结束时运行
    git checkout\uuuu init.py\uuu
    ,将其恢复到推之前的原始状态
  • git stash
    git stash apply
    每次切换分支时

  • 这看起来好像是我想得太多了,但这是我的第一个软件工程角色,我真的在尽可能多地学习Git和正确的工作流。谢谢

    我同意使用环境变量解决这个问题是一个更干净的解决方案,但为了完成这一点,下面是使用git实现这一点的方法

    Git有钩子,钩子是在Git事件上运行的bash脚本。您需要配置三个。
    首先
    签出后
    提交后

    你会想做一些类似的事情

    BRANCH=$(git branch | grep '^\*' | cut -b3- | cut -f1,2 -d'-')
    BRANCHTYPE=${BRANCH%/*}
    if [[ $BRANCHTYPE == 'master' ]] || [[ $BRANCHTYPE == 'develop' ]]; then
        echo 'DOCUMENTS_CACHE = True' > __init.py__
    else
        echo 'DOCUMENTS_CACHE = False' > __init.py__
    fi
    
    预提交中

    echo 'DOCUMENTS_CACHE = True' > __init.py__
    

    你可能走错了方向。似乎控制旋钮不应该是某个源文件中的控制旋钮,而应该是关于运行环境的动态确定的控制旋钮。因此,也许您应该根据环境设置
    文档\u缓存
    ,而不是文件中包含的常量。这可能和使用环境变量一样简单,也可能更复杂,比如调用外部程序检查运行时环境并返回结果。啊,谢谢@torek。由于对这方面比较陌生,我没有考虑过。给我的团队带来一个很好的建议。谢谢哇,我不知道Git hooks!非常感谢分享这些信息。我将此标记为答案,因为我特别询问如何使用Git解决问题。尽管对于将来可能会遇到这种情况的人来说,建议使用环境变量的答案可能是一个很好的解决方案。