假设我是回购的维护者,并且我想从贡献者那里获取更改,那么有一些可能的工作流程:
cherry-pick每个都从远程提交(按顺序).在这种情况下,git将提交记录为与远程分支无关.merge是分支,拉入所有更改,并添加新的"冲突"提交(如果需要).merge各自从远程分支单独提交(再次按顺序),允许为每个提交记录冲突,而不是将所有冲突组合为一个.rebase(与cherry-pick选项相同?),但我的理解是,这可能会导致贡献者的混淆.也许这消除了选项1.在情况2和3中,git记录了提交的分支历史记录,与1不同.
使用任何一种方法cherry-pick或merge描述的方法之间有什么优点和缺点?我的理解是方法2是常态,但我觉得用单个"冲突"合并解决大型提交并不是最干净的解决方案.
假设我有两个分支,master并且new_feature
我应该在一个特定的功能上工作,我认为这个功能将是其中的一部分new_feature,我检查了specific_feature分支机构的new_feature分支,就像这样
git checkout -b specific_feature
Run Code Online (Sandbox Code Playgroud)
现在我在这个specific_feature分支中做了很多开发,并将upstream/new_feature它合并了几次以获得远程更改.
现在,我才知道,我specific_feature应该已经一发不可收拾的master不是new_feature.(new_feature分支尚未准备好被推送)
有没有办法可以把我的specific_feature分支和new_feature分支之间的差异,并将这些更改应用到新的分支说specific_feature_master(分支出主)?
我在我的Staging分支上有一个提交我想转到我的master分支机构.我正在使用Mac的Github应用程序,我没有看到这样做的方法.
我知道如何在终端中执行此操作.
学习cherry-pickGithub应用程序中的方法会很好,因为我也喜欢使用它.
有什么建议?
我已经能够说服我的小组使用语义版本控制并转移到git(来自CVS,所有开发都发生在主干上).
这就是我们一直在使用的东西(版本分支表示某种新功能的引入):
master
*
|
* * version 2.0 branch
| /
* *
|/
* * version 1.0 branch
| /
* *
|/
*
|
...
Run Code Online (Sandbox Code Playgroud)
问题是,当需要在版本1.0分支上进行错误修复时,该修补程序需要回显到版本2.0和主数据库.我们一直在挑选,但我觉得这比我想要的更容易出错(我觉得随着时间的推移它会变得无法管理).
我们正在做的事情有一些限制 - 它是遗留代码,并且没有进行大量测试(开始引入单元测试,非常少的集成测试),因此保持这些版本分支的稳定性(不介绍很多回归错误)很重要.
你们有没有比采摘樱桃更好的方法来解决这个问题?有更好的工作流程可供使用吗?非常感谢您提供的任何帮助.
我们有prod生产发布和dev持续开发分支。
我们主要在dev分支机构工作,客户会不时决定他想使用哪些功能/错误修正,prod然后我们挑选它们。
根据我的理解,樱桃小菜与git flow模型矛盾。
到目前为止,我还没有看到如何调整流程来避免这种情况。
git flow假定您事先知道应该改变去prod或不
社区周围有什么办法吗?
git fetch
git checkout origin/dev -B issue-12345 # new branch for issue #12345 from bug tracking system
# ... do many atomic commits
git fetch
git checkout origin/dev -B dev
git merge issue-12345 --no-ff -m "Bug #12345 - Bug title from bug tracking system"
# ... fix merge conflicts if any and commit
git branch …Run Code Online (Sandbox Code Playgroud)