如何使用配置或一些脚本自动处理 git 推送到 DEV 分支
How to handle git push to DEV branch automatically using configuration or some scripts
我在 Azure devops 中有一个代码存储库,用于管道构建和其他。
我有开发分支和主分支。开发人员将他们的代码推送到 dev 分支,这将合并到 master 分支进行发布。我想在将代码推送到DEV分支之前检查代码是否与master latest合并。
这可以通过手动比较两个分支 运行 命令来完成。但我想知道这是否可以通过脚本或 azure 存储库控制配置自动实现。
提前致谢。
最佳解决方案
如果master合并到dev,master就是dev的祖先
使用这个直接测试那个条件:
if git merge-base --is-ancestor master dev; then
# master is an ancestor of dev, and was therefore merged in
fi
反转master和dev,测试dev是否合并到master中。
稍长的解决方案
git merge-base
会告诉你两个分支最后的合并点。如果 master 合并到 dev,那么 git merge-base master dev
就是 master,如果 dev 合并到 master,那么 merge-base 就是 dev.
因此您可以使用此测试来检查 master 是否已合并到 dev:
if [ `git merge-base master dev` == `git rev-parse master` ]; then
# master was merged into dev
else
# master was not merged into dev
fi
如果你想知道dev是否合并到master,请使用git rev-parse dev
参考
我在这个相关问题中找到了 --is-ancestor
解决方案:
How can I tell if one commit is an ancestor of another commit (or vice-versa)?
我在 Azure devops 中有一个代码存储库,用于管道构建和其他。 我有开发分支和主分支。开发人员将他们的代码推送到 dev 分支,这将合并到 master 分支进行发布。我想在将代码推送到DEV分支之前检查代码是否与master latest合并。
这可以通过手动比较两个分支 运行 命令来完成。但我想知道这是否可以通过脚本或 azure 存储库控制配置自动实现。
提前致谢。
最佳解决方案
如果master合并到dev,master就是dev的祖先
使用这个直接测试那个条件:
if git merge-base --is-ancestor master dev; then
# master is an ancestor of dev, and was therefore merged in
fi
反转master和dev,测试dev是否合并到master中。
稍长的解决方案
git merge-base
会告诉你两个分支最后的合并点。如果 master 合并到 dev,那么 git merge-base master dev
就是 master,如果 dev 合并到 master,那么 merge-base 就是 dev.
因此您可以使用此测试来检查 master 是否已合并到 dev:
if [ `git merge-base master dev` == `git rev-parse master` ]; then
# master was merged into dev
else
# master was not merged into dev
fi
如果你想知道dev是否合并到master,请使用git rev-parse dev
参考
我在这个相关问题中找到了 --is-ancestor
解决方案:
How can I tell if one commit is an ancestor of another commit (or vice-versa)?