什么时候建议使用git rebase
vs. git merge
?
成功改造后我还需要合并吗?
我和其他开发人员一起在一个项目上使用Git几个月了.我有几年的SVN经验,所以我想我给这段关系带来了很多包袱.
我听说Git非常适合分支和合并,到目前为止,我只是没有看到它.当然,分支很简单,但是当我尝试合并时,一切都变得很糟糕.现在,我已经习惯了SVN,但在我看来,我只是将一个低于标准的版本系统换成了另一个.
我的搭档告诉我,我的问题源于我不顾一切地合并,并且我应该在很多情况下使用rebase而不是合并.例如,这是他所规定的工作流程:
clone the remote repository
git checkout -b my_new_feature
..work and commit some stuff
git rebase master
..work and commit some stuff
git rebase master
..finish the feature
git checkout master
git merge my_new_feature
Run Code Online (Sandbox Code Playgroud)
基本上,创建一个功能分支,始终从主分支到分支,并从分支合并回主分支.需要注意的重要一点是,分支始终保持在本地.
这是我开始的工作流程
clone remote repository
create my_new_feature branch on remote repository
git checkout -b --track my_new_feature origin/my_new_feature
..work, commit, push to origin/my_new_feature
git merge master (to get some changes that my partner added)
..work, commit, push to origin/my_new_feature
git merge master
..finish …
Run Code Online (Sandbox Code Playgroud) 我的主人有两个分支:
有没有办法将昨天的提交从wss复制到v2.1?
我有以下存储库布局:
我想要实现的是从工作分支中挑选一系列提交并将其合并到集成分支中.我是git的新手,我无法弄清楚如何正确地做到这一点(在一次操作中不提取合并的樱桃选择提交范围)而不会弄乱存储库.关于这个的任何指针或想法?谢谢!
我们公司目前正在使用简单的主干/发布/修补程序分支模型,并希望了解哪些分支模型最适合您的公司或开发过程.
工作流程/分支模型
以下是我所看到的三个主要描述,但它们彼此部分相互矛盾,或者不足以解决我们遇到的后续问题(如下所述).因此,我们的团队到目前为止默认不是那么好的解决方案.你做得更好吗?
合并与变基(纠结与连续历史)
是应该pull --rebase
还是等待合并回到主线直到你的任务完成?我个人倾向于合并,因为这保留了一个任务开始和完成的基础的视觉图示,我甚至更喜欢merge --no-ff
这个目的.然而,它有其他缺点.还有许多人没有意识到合并的有用属性 - 它不是可交换的(将主题分支合并到master中并不意味着将master合并到主题分支中).
我正在寻找一个自然的工作流程
有时会发生错误,因为我们的程序无法通过简单的规则捕获特定情况.例如,早期版本所需的修复当然应该足够下游,以便可以将上游合并到所有必要的分支中(这些术语的使用是否足够清楚?).然而,在开发人员意识到它应该被放置在更下游之前,并且如果已经推送(更糟糕的是,合并或基于它的某些东西)之后,修复使其成为主人,那么剩下的选项就是挑选,其相关的危险.您使用了哪些简单的规则?同样在这包括一个主题分支的尴尬必然排除其他主题分支(假设它们从共同基线分支).开发人员不希望完成一个功能来启动另一个功能,感觉就像他们刚写的代码不再存在
如何避免创建合并冲突(由于挑选)?
创建合并冲突的可靠方法似乎是在分支机构之间进行挑选,它们永远不会再次合并?在任一分支中应用相同的提交(如何执行此操作?)可能会解决这种情况?这是我不敢推动基于合并的工作流程的一个原因.
如何分解成外用分支?
我们意识到从主题分支组装完成的集成是很棒的,但是我们的开发人员经常工作没有明确定义(有时像"戳"一样简单),如果某些代码已经进入"misc"主题,根据上面的问题,它不能再被带出去了吗?您如何使用定义/批准/毕业/发布您的主题分支?
代码审查和毕业等适当的程序当然是可爱的.
但是我们根本无法保持足够的东西来管理这个 - 任何建议?整合分支,插图?
以下是相关问题列表:
还要看看Plastic SCM在任务驱动开发上写的内容,如果不是Plastic的选择,请研究nvie的分支模型及其支持脚本.
我有BranchA
113个提交BranchB
.
但我只希望将最后10个左右的提交BranchA
合并到BranchB
.
有没有办法做到这一点?
我经常读到Hg(和Git和......)在合并方面比SVN更好但是我从未见过Hg/Git可以合并SVN失败的地方(或者SVN需要人工干预的地方)的实际例子.您可以发布一些分支/修改/提交/ ....-操作的逐步列表,显示SVN在Hg/Git愉快地移动时会失败的位置吗?实用,非常特殊的情况请...
一些背景:我们有几十个开发人员在使用SVN进行项目,每个项目(或一组类似项目)都在自己的存储库中.我们知道如何应用发布和功能分支,所以我们不会经常遇到问题(即,我们一直在那里,但我们已经学会克服Joel的问题 "一个程序员给整个团队造成创伤"或"需要六个开发人员两周才能重新整合分支机构").我们的发布分支非常稳定,仅用于应用错误修正.我们的中继线应该足够稳定,能够在一周内创建发布.我们还有一些开发人员或开发人员可以使用的功能分支.是的,它们在重新集成后被删除,因此它们不会使存储库混乱.;)
所以我仍然试图找到Hg/Git优于SVN的优势.我很想获得一些实践经验,但目前还没有任何我们可以移动到汞/ GIT中还没有更大的项目,所以我坚持用只含有少量由文件小型人工玩的项目.而且我正在寻找一些你可以感受到Hg/Git令人印象深刻的力量的案例,因为到目前为止我经常读到它们但却未能自己找到它们.
我有以下分支:
master
production
以及以下远程分支:
origin/master
origin/production
我有一个脚本来获取origin/master
分支并获取从我上一次fetch(log -p master..origin/master
)改变的差异.然后我合并origin/master
.
找到的提交被推送到代码审查工具.
我想将成功的提交 - 只有它们 - 推送到生产分支,然后当然origin/production
.
我怎么能这样做?
此外,我有两个运行的脚本:从中提取的脚本origin/master
,将提交详细信息提交到数据库,以及合并,以及我正在编写的另一个必须推送成功提交的脚本.
我想让这两个脚本运行,同时避免竞争条件/合并冲突.因为我只想使用指定的提交,也许有办法摆脱我不想要的提交?
我发现TFS中的shelve/unshelve命令非常方便且易于使用.Git中的等价物是什么?
这是TFS中的场景:
我知道有一个命令调用樱桃选择,但我不确定工作流程,是否符合需要.
所以我创建了一个我已经创建的另一个分支的分支,现在当我尝试将分支合并到master时,我遇到了必须合并两个分支的情况.
这是一张图
主 - >
Run Code Online (Sandbox Code Playgroud)->Branch 1 -> Branch 2
我希望能够将分支2上的更改仅合并到master上,而不必合并分支1上的更改(如果有意义的话).我查看了重置并恢复,但似乎这些东西将删除我用分支2做的所有更改.任何想法?
谢谢