我有一个有趣的事情发生在使用git,想知道是否有人可以解释给我,所以我可以更好地理解.
在进行多个分支(A,B)的合并时,
git merge A B
Run Code Online (Sandbox Code Playgroud)
失败,因为非快进,而
git merge B A
Run Code Online (Sandbox Code Playgroud)
运作良好.那为什么会这样?
假设我们有两个分支(B和C),它们与共同的祖先A不同.从B到C的合并会产生与从C到B合并相同的结果吗?
A
|
/ \
B C
Run Code Online (Sandbox Code Playgroud)
澄清 - 我假设任何手动合并冲突解决方案都会在两个方向上发生.但是,任何自动合并都会导致选择相同的代码吗?这就是我所假设的,因为提交日期在两个方向上都是相同的.
为了进一步澄清 - 我知道实际的合并会导致基于方向的彼此的"镜像".我只是询问自动解决的冲突.
我正在尝试使用TFS Power Tools将我的更改解压缩到另一个分支.我正在尝试执行命令
tfpt unshelve /migrate "NuGet Build" "/source:$/ProjectName/Main/Source" "/target:$/ProjectName/Main/Source-NuGet"
Run Code Online (Sandbox Code Playgroud)
但它会返回消息'tfpt : Unable to determine the workspace'.
我正在从映射到此项目的目录中运行命令.而且我试过用tf workspaces /s:http://our-tfs.
有谁知道如何解决这个问题?
我们使用Subversion,除了像我这样的一些人,在Subversion中几乎没有分支和合并的经验.我的Subversion经验仅限于简单的功能分支,其中合并和树冲突虽然不是很罕见,但并不是很难解决.
鉴于此,我正在帮助管理一个项目,其中我们当前对trunk方法的提交根本不可持续地满足我们的需求.我介绍了功能分支和合并到我的本地化团队,我们取得了一些成功.然而,简单的功能分支仍然无法回答我们的所有问题,例如:
似乎 这里定义的git-flow将很长一段时间来回答很多这些问题.我在Mercurial中尝试了这个方法,似乎也可以在那里实现这个方法.可悲的是,此时迁移到DVCS已不在考虑范围之内.
但是,我在Subversion中模仿此方法的简短尝试因许多合并和树冲突而失败.合并选项和边缘案例众多且令人费解.
可以使用Subversion来实现git-flow,如果是,那么痛苦程度是多少?
我正在学习git-flow,我刚刚做了git flow feature finish <feature-name>,它合并了我的功能分支来开发和删除它.
而不是这个,我想将功能分支推送到github,所以我可以在同行评审后合并它.
所以问题是,如何"撤消"这个命令.或者换句话说,如何将我的最后两次提交从开发移动到我的功能分支?
我正在研究从starteam到git的转换.
目前,在starteam中,我们使用具有特殊名称的"浮动视图".这些浮动视图基本上像别名一样工作.因此,我们可以指定一个特定的别名来结账,我们将获得我们目前正在进行模型测试的分支.
怎么会在git中完成?这基本上是我们的分支机构的组织方式:
这些都是分支机构
master (stable view)
| - Branch 2012.05.01
| | - Project 1
| | - Project 2
| | - model [floating view / alias to Branch 2012.05.01]
|
| - Branch 2012.07.11 (these would also have various child views for projects)
| - Branch 2012.10.17
Run Code Online (Sandbox Code Playgroud)
(模型测试完成后,分支2012.05.01将合并为主)
在我们的自动脚本(ant)中运行我们的模型部署,我们只需从我们的分支机构中检出"模型".这样我们就不必改变我们的脚本,因为我们改变了我们模型测试的哪个分支,并找出我们进行模型测试的哪个视图就像确定"模型"分支引用哪个分支一样简单.
有什么方法可以在git中做类似的事情吗?
编辑:人们在这里感到困惑.
我有一个实际来源的分支,我很长时间没有提交任何提交,目前它已经完全过时了.我想用我的分支内容替换master的内容.一种方法是检查分支和主服务器,删除主服务器的内容并将内容从分支复制到主服务器,然后将结果推送到主服务器.
它有效,但我相信必须有一些git命令才能以更简单的方式完成它.
有谁知道怎么做?
我已经合并了2个分支并且出现了冲突,我需要一些提示,它从它结束的地方开始,等等.我用一些伪造的数据替换了代码,以便于阅读和讨论.
<<<<<<< HEAD
aaaaaa
||||||| merged common ancestors
<<<<<<< Temporary merge branch 1
bbbbbb
=======
cccccc
>>>>>>> mybranch
dddddd
<<<<<<< HEAD
eeeeee
||||||| merged common ancestors
ffffff
||||||| merged common ancestors
gggggg
=======
>>>>>>> Temporary merge branch 2
=======
hhhhhh
>>>>>>> mybranch
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何将分支从单独的仓库合并到当前.
我有以下内容:
PJT1 - 包含分支默认和foodog
PJT2 - 包含分支默认值
来自PJT2,我做了以下几点:
$ hg fetch -y ../PJT1 -r foodog -m "this is a test"
Run Code Online (Sandbox Code Playgroud)
现在,如果我查看PJT2,我会看到正确的文件和更改.但是,如果我这样做hg branches,我会得到以下内容:
[someone@myhome pjt2]$ hg branches
foodog 1:c1e14fde816b
default 0:7b1adb938f71 (inactive)
Run Code Online (Sandbox Code Playgroud)
并hg branch揭示以下内容:
[someone@myhome pjt2]$ hg branch
foodog
Run Code Online (Sandbox Code Playgroud)
如何从PJT1的foodog分支机构获取PJT2 分支的内容default?
我有两个分支.分期和Beta.暂存中包含代码(包括文件),我根本不需要.如何让Beta完全覆盖Staging,以便这些文件或代码都不会从Staging合并到Beta.
我看到有些人建议这样做:
git checkout staging
git merge -s ours beta
Run Code Online (Sandbox Code Playgroud)
但我不相信预先存在的文件会是"代码冲突",因此不会被删除.我错了吗?如果我是对的,我将如何做到这一点?