英文:
Is there a way to have beta merged into master without adding an extra merge commit?
问题
我们有一个 GitHub 存储库,其中有两个分支,main和beta。
main:生产服务器流水线,beta:测试服务器流水线。
当需要新功能时,我们创建一个feature1分支。
步骤1:
git checkout feature1
进行更改
git add .
git commit -am "创建了功能"
git push origin feature1
步骤2:
拉取请求:我们从feature1创建一个拉取请求到beta分支。
Beta流水线触发并且测试服务器一切正常。
git checkout beta
git checkout pull origin beta
步骤3:
从beta到main或从feature1到main创建另一个拉取请求。
这里GitHub会出现一个问题,即beta分支领先和/或落后于main分支。
如何避免这个问题?使用分支方法来维护生产和测试服务器是否正确?
如何通过拉取请求将更改推送到测试和生产服务器,而不会遇到领先和落后问题?
英文:
We have GitHub repository with branches 2 branches main and beta.
main: production server pipeline and beta: testing server pipeline.
When feature is required, we create a branch feature1
Step 1:
git checkout feature1
Make the changes
git add .
git commit -am "Feature is created"
git push origin feature1
Step 2:
Pull request: we create a pull request from feature1 to beta.
Beta pipeline gets triggered and all ok with testing server.
git checkout beta
git checkout pull origin beta
Step 3:
Create another pull request from beta to main or feature1 to main.
Here github creates a problem that beta branch goes 1 commit ahead and/or behind the main branch.
What is the correct flow to avoid this problem? Is a branching approach correct for maintaining production and testing servers?
How should I push changes to testing and production servers using pull requests without encountering issues with commit ahead and behind problems?
答案1
得分: -1
我按照以下方式解释了它。我维护两个分支,主分支和测试分支,它们用作生产和测试服务器的分支,具有CI/CD管道。
- 从主分支创建一个测试分支。
git checkout -b beta
- 创建一个功能分支
git checkout -b feature/branch1
- 一旦功能分支开发完成,在远程推送更改。
git add -A
git commit -m "创建了功能"
git push origin feature/branch1
-
从功能分支创建一个拉取请求到beta/testing服务器分支。批准并合并拉取请求。
-
一旦在beta/testing服务器上完成测试,从beta分支创建另一个拉取请求到主分支。批准并合并拉取请求。
-
一旦所有更改都推送到生产服务器,我们需要确保beta/testing服务器分支与主分支保持同步。
git checkout main
git pull origin main
git checkout beta
git merge main
git push -f origin beta
- 现在您可以在本地和远程删除功能分支
git branch -d feature/branch1
git push origin --delete feature/branch1
英文:
I figured it out as below. I am maintaining 2 branches main and beta, which serve as branches for the production and testing server with CI/CD pipeline.
-
Create a beta branch from the main branch.
git checkout -b beta
-
Create a feature branch
git checkout -b feature/branch1
-
Once the feature branch is developed, push changes on the remote.
git add -A git commit -m "Feature is created" git push origin feature/branch1
-
Create a pull request from the feature branch to beta/testing server branch. Approve and merge the pull request.
-
Once testing is completed on beta/testing server, create another pull request from beta to main. Approve and merge the pull request.
-
Once all changes are pushed to production server, we need to make sure that beta/testing server branch stays in sync with main branch.
git checkout main git pull origin main git checkout beta git merge main git push -f origin beta
-
Now you can delete feature branch on local and remote
git branch -d feature/branch1 git push origin --delete feature/branch1
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论