jgitflow 和拉取请求
Posted
技术标签:
【中文标题】jgitflow 和拉取请求【英文标题】:jgitflow and pull request 【发布时间】:2016-06-16 11:04:25 【问题描述】:我是 git 新手。我对 git 的基本知识知之甚少,而且我在使用它方面相当成功。
所以我有一个 master,develop 分支。从开发我已经分支到一个特性分支和一个发布分支。为了从开发分支出来,我使用了以下命令。
jgitflow feature-start from develop
jgitflow:release-start from develop
现在我已经完成了这个功能,我想合并到开发中。我是第一次这样做。现在我很困惑如何去做。理想情况下,我应该使用以下命令:
jgitflow:feature-finish
我认为另一种选择是执行拉取请求。
请告诉我哪些选项是正确的,如果在使用 jgitflow:feature-finish
时出现冲突会发生什么
【问题讨论】:
【参考方案1】:拉取请求是必不可少的,因为它将审查更改。但是,如果您从 PR 合并,您仍然可以运行 jgitflow:feature-finish,尽管它会导致保留远程分支(如果之前推送)。 理想的方法是
为该功能提出 PR,获得批准。 运行 feature-finish 命令合并更改以开发和清理本地 和远程功能分支。要解决冲突,最好从本地开发中提取,而不是通过功能完成合并,因为它可能会变得混乱。
【讨论】:
【参考方案2】:详情请见https://bitbucket.org/atlassian/jgit-flow/wiki/goals/feature-finish
根据您的要求使用必要的标志,如keepBranch、squash。
您还应该将 featureRebase 设为 true。这将在从您的案例中开发的原点合并之前重新设置功能分支。这将使您能够以更好的方式处理冲突。
【讨论】:
【参考方案3】:在尝试完成功能时避免冲突的最简单方法是在执行finish-feature
之前遵循以下工作流程:
git fetch
:确保您的本地 repo 副本是最新的
git checkout develop
:转至develop
git merge origin/develop
:确保您的本地开发是最新的(origin
是这里的远程名称)
git checkout <feature-branch>
: 再去你的特性分支
git merge develop
: 合并和解决冲突,如果有的话(在你的特性分支上)
mvn jgitflow:feature-finish
你已经解决了冲突,所以这会起作用
我会不推荐另一个答案中提到的featureRebase
选项,因为你说你只知道一些关于 Git 的基本知识。如果您已经推送了本地功能分支并且其他人正在处理它,那么 Rebase 可能会使事情复杂化。
Rebase 只能在本地分支上安全使用,因为它会更改历史记录。
关于拉取请求,请参阅 https://www.atlassian.com/git/tutorials/making-a-pull-request/how-it-works 上的 Gitflow Workflow With Pull Requests
【讨论】:
以上是关于jgitflow 和拉取请求的主要内容,如果未能解决你的问题,请参考以下文章