我们已经开始在我们的团队中使用Bitbucket Server,并且希望强制使用pull请求来从功能分支到我们的主要集成分支.为了强制执行此操作,我们启用了分支权限功能,该功能可防止合并而无需对这些分支执行拉取请求.这很有效,直到我们得到一个有冲突的pull请求.
在这种情况下,指令说要手动获取源分支的头部并将其合并到目标,然后将其推送.但是,合并提交被分支权限拒绝!
我们在这里遗漏了什么,或者在使用分支权限时是否无法手动合并?
在BitBucket服务器上,当我们在合并任何拉取请求时遇到任何冲突时,我们可以使用git bash工具在我们的本地系统上解析它,然后我们可以提交并将我们的更改推送到远程功能分支并将其合并到主分支.
在我们的本地系统的git bash工具中,需要遵循以下步骤.
(1)打开git bash工具并结帐或切换到本地功能分支.
(2)将最新的更改从主分支(比如'master')拉入功能分支.
git pull origin master
Run Code Online (Sandbox Code Playgroud)
(3)如果上述命令由于某些本地更改而失败,则使用以下命令存储它们,否则转到下一步.
git stash
Run Code Online (Sandbox Code Playgroud)
其次是 -
git pull origin master
Run Code Online (Sandbox Code Playgroud)
(4)如果发生冲突,自动合并将失败,因此我们需要手动合并.使用以下命令解决冲突.
git mergetool
Run Code Online (Sandbox Code Playgroud)
默认情况下,它将显示所有可用的合并工具,其中一个将自动选中.如果我们觉得我们对任何其他工具感到满意,那么我们也可以配置它,git将为我们打开该工具以解决冲突.
(5)解决冲突后,将更改提交到功能分支.
git commit
Run Code Online (Sandbox Code Playgroud)
(6)将更改推送到远程功能分支.
git push
Run Code Online (Sandbox Code Playgroud)
在BitBucket服务器上验证,现在pull请求应该自动更新.
再次尝试合并它; 如果没有冲突,它将成功合并.
如果它再次发生合并冲突(如果有人在我们解决本地系统冲突期间在主分支中提交了新的更改),请再次按照上述步骤解决它们.
如果我们按顺序执行上述步骤,我们应该能够成功解决任何冲突.
谢谢,希望它有所帮助.
当我们进入肮脏的自动合并场景时,无论是通过分支权限还是通过自动合并冲突,使用功能/错误修复分支,我们都会执行以下操作:
在存储库的本地克隆中:
这是 CLI 上的:
git checkout <destination branch>
git pull origin <destination branch on remote>
git checkout -b feature/<my branch description>
git fetch origin <source branch>
git merge FETCH_HEAD
<fix conflicts>
git stage <changed files>
git commit -m <my message>
git push origin feature/<my branch description>
<continue in bitbucket>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12467 次 |
| 最近记录: |