在它出现之前,我已经看过这个主题的几个主题,包括:
我正在寻找为我们的开发小组切换到Mercurial(来自Subversion).在我这样做之前,我正在做通常的利弊列表.
我的"优点"之一是Mercurial的合并优势,但到目前为止,我没有找到令人信服的证据.也就是说,在HgInit.com上发表声明,我无法核实:
例如,如果我稍微更改一个函数,然后将其移动到其他地方,Subversion就不会真正记住这些步骤,所以当合并的时候,它可能会认为一个新的函数只是出现了蓝色.Mercurial将分别记住这些事情:功能已更改,功能已移动,这意味着如果您稍微更改了该功能,则Mercurial更有可能成功合并我们的更改.
这将是非常引人注目的功能,但据我所知,这只是热空气.我一直无法验证上述声明.
我创建了一个Mercurial存储库,做了一个Hello World,然后克隆了它.在一个我修改了函数,提交它然后移动它,然后提交它.在另一个中,我只是在函数中添加了另一个输出行并提交了.
当我合并时,我得到的基本相同的合并冲突我将使用Subversion.
我知道mercurial可以更好地跟踪文件重命名,除了合并之外DVCS还有其他优点,但我对这个例子很感兴趣.乔尔斯波尔斯基在这里偏离基地,还是我错过了什么?
我在这方面没有经验,但看起来确实如此,因为Mercurial保留了更多的信息,理论上它可以更好地合并(如果开发人员也经常进行签名).例如,我认为Mercurial可以通过比较多个更改来获取上下文更改,例如,我修改函数,签入,移动函数,签入,以及Mercurial将这两个部分关联起来.
但是,Mercurial的合并似乎并没有真正利用添加的信息,并且似乎与Subversion的操作方式相同.它是否正确?
是否有像git-commit的git-merge这样的选项?
我们维护一个必须执行某些更改的暂存环境.一些限制使我们只使用一个Linux用户来访问登台环境.
无论如何,我们是一个有合作倡议的小团队,我们在做提交时告诉,哪一个是使用--author git-commit选项的作者.但是,有时我们需要从其他分支合并,这会导致非ff合并.这意味着在执行此合并时会执行提交.
在这种情况下,哪个是手动为合并提交指定作者的最佳方法?
git version-control git-merge branching-and-merging git-branch
这么长时间的SVN用户,但在分支/标记方面相当缺乏经验,当我怀疑我没有真正正确使用它或充分发挥其潜力.
我有我的主干,我正在努力添加新的功能等.这个代码库用于多个网站,我们在每个项目的基础上创建一个分支机构.
每个分支通常都有特定于该项目的修改,我们认为可重复使用的任何内容都会添加到主干中,并且可以在各种项目上打开和关闭功能.
目前,当我们对主干进行更改,并希望在预先设置的分支中进行修改时,我必须通过手动将某些修订合并到分支中并重新发布它们.不理想,容易错过的东西.
所以,我的问题......有没有办法用中继的所有更改来更新我的分支,并处理它们就好像它是冲突的标准主干更新?
我已经看到将分支重新集成到主干,但由于我在这种情况下使用分支的方式,这不是我想要做的事情.
我创建了一个拉取请求,我的审批者请求进行一些更改,我将这些更改标记为已解决并单击re-request按钮,但没有查看合并是否被阻止或解除阻止。那么现在要解除合并阻止,审批者是否需要再次审核更改并批准它?因为下面的消息并没有说需要审稿人批准。
一旦请求的更改得到解决,合并就可以自动执行。
在SVN中,trunk是主要开发的推荐位置,我将这个约定用于我的所有项目.但是,这意味着行李箱有时不稳定,甚至破损.例如,这发生在
我可以想象会有工具来防止错误地提交某些东西(例如TeamCity和延迟提交),但你真的可以克服第二个问题吗?如果没有,那么在某些分支上进行"狂野开发"会不会更好/branch/dev,只有当构建相当稳固时才合并到主干?
在一个mercurial repo中,"默认"分支已经过时了,以至于在"开发"(一个具有应用程序的最新部署版本的命名分支)的变化中合并不再有意义.
不是将develop合并到默认值,而是如何关闭当前的默认分支,然后使用develop的head创建一个新的默认分支?
我已经看到了一些类似的问题和答案,也许是相同的,但我仍然无法理解这应该如何工作.
谢谢!
我必须从未合并的分支机构创建一些代码审查.
在寻找解决方案时,我们不要去本地分支上下文问题,因为这将在服务器上运行; 只有原点远程,我会在其他命令之前运行git fetch origin命令,当我们谈论分支时,我们将引用origin/branch-name.
如果设置很简单,并且每个源自master的分支继续以自己的方式继续,我们可以运行:
git rev-list origin/branch-name --not origin/master --no-merges
Run Code Online (Sandbox Code Playgroud)
对于每个未合并的分支,并将结果提交添加到每个分支的每个审阅.
当2-3个分支之间存在合并并且其中一些分支继续工作时会出现问题.正如我所说,对于每个分支,我想创建程序化的代码审查,我不想在多个评论中包含提交.
主要是每次提交找到原始分支时出现问题.
或者更简单一点......找到所有未创建的提交,这些提交按照他们最有可能创建的分支进行分组.
让我们关注一个简单的例子:
* b4 - branch2's head
* | a4 - branch1's head
| * b3
* | merge branch2 into branch1
* |\ | m3 - master's head
| * \| a3
| | |
| | * b2
| * | merge master into branch1
* /| | m2
|/ | * merge branch1 into …Run Code Online (Sandbox Code Playgroud) 我们已决定为我们添加到移动应用程序中的每个新功能创建新的SVN分支.这背后的最终目标是保留每个代码更改的历史记录(当我们手动将项目文件夹复制到SVN而不是创建和合并分支时,这不会发生).
我的问题是,到目前为止,我无法将更改从一个分支合并到另一个分支.
我已经提到以下帖子但没有成功:
这是我到目前为止所尝试的:
我有两个功能分支,如下面Tortoise SVN中所示:
我想将分支Feature_A3中的更改合并到分支Feature_A2中.为此,我Merge from在A2工作副本中使用Android Studio的VCS中的选项:
然后它要求我选择要从(A3)合并的分支或配置其他分支:
我点击配置分支,只是为了显示现有的分支配置:
如您所见,A2是Trunk,A3是分支.它是否正确?
然后它问我想要合并到A2的A3部分.我选择/src目录(存在相关更改的位置):
然后它慷慨地给了我三种不同的方式来执行合并操作:
我选择了第三个选项,因为它直接给了我需要合并的更改:
我点击Merge Selected和BAM!我每次都会收到此错误:
关于"未解决的冲突"或"跳过的项目"是什么,没有任何线索.为什么我会收到此错误,如何将A3中的更改合并到A2中?有人可以帮忙吗?所有答案将不胜感激.谢谢 ...
我一直在关注以下官方的Intellij IDEA文档:
请注意:
目前我使用的是Subversion,而不是Git.
我本地工作副本的目录结构与SVN repos的目录结构不完全相同.这可能是错误的原因吗?
答案 ...
感谢Peter Parker,尤其是Yoav Aharoni的宝贵意见.正如Yoav正确指出的那样,确实是指定分支位置文件夹的方式.它需要是包含分支的文件夹,而不是分支文件夹本身:正如Peter正确地说的那样,选中"Include merged revisions"会显示合并的历史记录.我现在能够从IDE本身合并,并在TortoiseSVN中查看合并的历史记录.没有命令行!好极了!!! …
svn android intellij-idea branching-and-merging android-studio
我一直在对行李箱做一些小修理,但是我希望我能够为我现在正在做的事情进行扩展.现在在Tortoise SVN中最简单的方法是什么?
我认为这是分支时"工作副本"选项的用途,但我看到以下说明:
工作副本 - 新分支是本地工作副本的相同副本.如果您已将某些文件更新为WC中的旧版本,或者您已进行了本地更改,那么这正是副本中的内容.当然,这种复杂的标记可能涉及将数据从WC传输回存储库(如果它已经不存在).
它让我想知道粗体部分是指更新主干或您即将创建的新分支.我会想到后者,但只是想在我做之前检查一下.或者如果还有其他方法我应该这样做,请告诉我.谢谢!
我最近合并了一个我正在与'master'分支合作的分支.我必须(仍然是一种git n00b)在推或拉时创造了一个origin/master和一个origin/HEAD分支.不幸的是,我没有记录我运行的命令.目前,我的团队在他们的主副本中有一堆代码,当我签出项目时,我没有得到这些代码(即使我clone到了新的位置).
这是Sourcetree显示的屏幕截图:

我真的需要解决这个问题,所以我可以继续工作,所以任何帮助都将不胜感激.
svn ×5
git ×4
branch ×2
git-branch ×2
mercurial ×2
android ×1
commit ×1
git-merge ×1
github ×1
merge ×1
svn-merge ×1
svn-update ×1
tortoisesvn ×1