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