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

时间:2018-03-15 18:56:25

标签: git

我正在处理一个Django项目,其__init__.py文件包含一个变量DOCUMENTS_CACHE = True,这会导致报告的输出在运行时被缓存。这是在我们的devmaster分支中声明变量的方式。

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

对于我处理的每个功能,我根据dev分支的当前状态使用Git创建一个新分支,因此我始终使用DOCUMENTS_CACHE = True和我开始一个新功能始终需要手动将其更改为DOCUMENTS_CACHE = False

我无法将此更改推送到dev,因为这会让同事感到不安。

问题

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

  1. 在开始时手动进行更改,并在结束时运行git checkout __init.py__以将其恢复到原始状态然后再推送?
  2. 每次切换分支时都会
  3. git stashgit stash apply
  4. 看起来我似乎过度思考这么小的事情,但这是我的第一个软件工程角色,我真的想尽可能多地学习Git和正确的工作流程。谢谢!

1 个答案:

答案 0 :(得分:1)

我同意用环境变量解决这个问题是一个更清晰的解决方案,但只是为了完成,以下是使用git实现这一目标的方法。

Git有钩子,它是在git事件上运行的bash脚本。您需要配置三个 首先Count var lstAllPlaces = allPlacesDTO.World.Countries.Where(x => x.Places != null).SelectMany(x => x.Places).ToList(); if (lstAllPlaces.Count() == 0) { return; }
你会想做一些像

这样的事情
post-checkout

并在post-commit

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