保持发布分支与 master 保持最新,除了几个文件

Keep release branch up to date with master except a couple files

我有一个master分支和一个release分支。当我准备好使用新的编号发布版本时,我想使其与主分支保持同步,但在每个分支中维护 composer.json 和 auth.php 的不同版本。

我的 composer.json 需要开发分支中的一些 dev-master 版本,但应该只需要发布分支中的版本化版本。 auth.php 包含 server-side/release 版本与本地开发版本不同的数据库凭据。

除了基本提交之外,我是 git 的新手。

这是我为第一个发行版所做的

git clone ...
cd ...
git checkout -b release 
nano composer.json //and change dev-master requires to 0.1.* requires
nano auth.php //and change db credentials
git add -A
git commit -m "composer and auth changes for release"
git push origin release
git tag -a 0.1.0
git push origin 0.1.0

然后我就可以 composer require 0.1.* 并且成功了!

下个版本发布我想做的是:

git clone ...
cd ...
git checkout --track origin/release //to switch to the release branch
git merge ... //get changes from master, but DO NOT overwrite the release-version's composer.json or auth.php
git push origin release
git tag -a 0.1.1
git push origin 0.1.1

然后我将通过 ssh 连接到我的服务器并 composer update 以获取我网站的最新版本(位于私有存储库中)。

如何在 git 代码的第二个块中执行 git 合并行?

首先,我认为问题中的一个细节需要更正:合并后,您可能确实想要更改 composer.json 以获得新版本号,比如 0.1.1

现在,为了回答您的问题,我希望 git merge master 会在您即将创建 0.1.1 时执行您想要的操作。由于 composer.jsonauth.php 在最后一个 merge-base 之后在 release 分支上被更改,git merge 应该认识到它应该在合并来自的更改时保留这些更改master。如果您还在 master 上更改了这些文件,那么您可能会发生冲突,这将使您有机会在完成合并之前修复它。

如果事情不像我描述的那样有效,你能指出到底发生了什么吗?

无论 git merge 是否正确,下一步将是编辑 composer.json 以说明版本 0.1.1 并将其提交到 release 分支。如果需要,编辑并提交 auth.php - 但不需要。然后继续您的其余工作流程(推送、标记、推送)。