Github拉请求问题
我有以下情况:Github拉请求问题,git,github,Git,Github,我有以下情况: 我的Github默认分支是“开发” 我有三个“开发”分支的请求 3个拉取请求生成并验证正常(通过CI服务器) 然后手动合并一个拉取请求以“开发”。$bumpversion--commit dev'将自动执行,并生成和发布该版本。因此,包含“develope”上的版本更改的所有文件(.bumpversion.cfg,module/_init__;u.py) 到目前为止还不错。现在,由于“develope”中的更改,剩下的两个pull请求变得无效,无法再通过Github GUI进行
- 我的Github默认分支是“开发”
- 我有三个“开发”分支的请求
- 3个拉取请求生成并验证正常(通过CI服务器)
- 然后手动合并一个拉取请求以“开发”。$bumpversion--commit dev'将自动执行,并生成和发布该版本。因此,包含“develope”上的版本更改的所有文件(.bumpversion.cfg,module/_init__;u.py)
- 到目前为止还不错。现在,由于“develope”中的更改,剩下的两个pull请求变得无效,无法再通过Github GUI进行合并。我需要签出分支并与@Anirudha详细描述的“develop”合并
- 我不希望对这两个文件的更改导致拉取请求无效
我相信,对于知道如何解决这个问题的git专家来说,解决方案是显而易见的。到目前为止,我找不到它,所以请分享。您所需要做的就是,对那些请求进行签出:
git checkout PR1
拉动开发分支上的最新更改<代码>git pull origin develop
查看相应的更改。并推送到您各自的PR。git远程PR将使用新的更改进行更新,您的CI也将相应地批准 > P>您应该考虑删除代码中的版本信息,并在真正释放或部署应用程序时只注入它。 这样,您的源代码就不会因为持续的版本更改而变脏 当然,您希望git检查更改并在发生冲突时告诉您。我建议您使用另一种解决方案,这样冲突就不会发生,合并也会变得容易。(通读我的整篇文章,找到一个完整的解决方案) 你的情况下的部分解决方案 与其有一个确定的版本,不如有一个相对的版本号 我的意思是:有一个包含发行说明的文件。每次有人请求拉取时,他都会在这个文件中添加一行。该文件如下所示:
1.0.0 Added a major breaking change
0.1.0 Added a feature
0.0.1 Added a bugfix
1.0.0 Another major change
0.0.1 Bugfix
0.0.1 Another bugfix
发布时,您可以通过以下方式计算您的版本:
- 总结:2.1.3
- 或在较大更改后重置:2.0.2()
- 对于第二个选项:它关系到您接受拉取请求的顺序。(可能导致不同的版本号)
- 也许git仍然希望合并相同的行(而不是将它们添加到彼此下面),这仍然会导致冲突
- 不再需要担心正确的版本号
- 准备发行说明
2016-10-26 1.0.0.0添加了新的版本控制工具.txt
只要日期和描述是唯一的,您就不会有冲突,当然,除非更改的代码包含冲突
你的家庭作业:制作工具读取这些文件并累积版本号。您也可以读取文件的内容,并将其用作发行说明说明。如果由于冲突而无法在新开发的顶部重新设置PR分支的基础,则正常工作流程为:
- 联系公关作者
- 让他/她在获取的更新来源/开发上重新设置PR分支的基础,解决冲突,检查一切是否正常
- 强制推送PR分支(这将更新PR,并触发CI服务器的新一轮构建)
基本上,你需要确保公关作者正在做所有的艰苦工作;)当您想要集成该PR时,您所需要做的就是合并或重新基址(无冲突)。我建议您为此场景执行
git重新基址
它所做的是,在进行重新基准时签出您指定的分支机构,假设您有pr#2和pr#3挂起,您克隆回购并在生成pr的分支机构中执行
git rebase develop
它会说,在prgress中重新设置基础,所以,您可以在该过程中解决冲突,并执行
git add
现在,如果没有更多的冲突,重新基准要么继续,要么停止。如果有,您可以在终端中读取状态,以继续
git rebase --continue
现在,这样做,直到所有冲突都得到解决
最后,当您向分支机构签出该PR时,您应该看到没有冲突,分支机构可以自动合并(通过推到远程回购)
现在,对pr#3重复同样的过程,就完成了
总之
git rebase develop
git add <files>
git rebase --continue
git-rebase-developer
git添加
git rebase--继续吗
对pr#3也重复此操作。版本控制应该通过git完成,而不是通过存储库中的文件。您可以对新版本使用标记,而不是bumpversion.cfg:
git tag 1.0.0 -m "Optional Description or release name."
并且有一个changelog文件,该文件只能通过积累提交标题来更改bumpversion
Debian有一个git扩展来自动完成这一切:
git dch
编辑:如果您想自动添加版本,您可以使用某种约定将增量添加到提交消息中,最好是通过提交挂钩git dch
提供了一些选项来指定要增加的版本。您所描述的正是我想要避免的。有n个牵引要求