问题标签 [tree-conflict]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - git cherry-pick 一系列提交以防止历史损坏
问题的简短描述
在一个新的开发人员组加入我们的项目后,他们初始化了一个新的 repo 并将master 的快照复制(未合并!)到新创建的 repo 中。因此,在他们的分支中,旧文件丢失了master
. 之后,他们开始了典型的 git 工作流程,包括提交、分支、合并来自 master 的更新等。现在的问题是将他们的代码合并到master
或dev
排除前两次提交并保留我们的历史记录(并且保留他们的历史记录也很好)。
详细问题描述
所以我们有分支master
:dev
和funny_developers
。
这是我们的分支结构:
I...C...X
- 是我们的主要开发流程(master
现在dev
分支已同步)与提交历史。此流没有从funny_developers
分支导入
I'
- 是一个提交,其中funny_developers
重新启动了一个空的新仓库(似乎他们做了git-init
?)。
IABC
- 非常脏的提交,将提交时funny_developers
存在的所有文件复制为新文件。不合并 from ,只是重新创建项目的文件结构!所以他们放弃了在分支演化过程中所做的所有更改历史)。master
C
C
master
G..Z
- 是他们进行大量更改的大量提交。在这个流程中,他们还多次合并了来自 master 的更新,创建了自己的分支,将它们合并到funny_developers
(有时通过冲突解决)等等。
所以现在我在合并G..Z
到master
保留我们最初的提交历史和它们(排除I'
和IABC
提交)时遇到了问题。
问题
您能否建议我最好的方法(如果存在)来获取他们的提交master
并保留提交历史记录,不包括前两个?
我一次拯救女王和王国的实验
我试过了git cherry-pick G..Z
。但他们在并行分支中进行编码,并且正在将大量合并到funny_developers
. 他们解决了很多自己的分支冲突。如果我决定使用这种方法,我似乎需要很多时间来再次解决它们。
我试过git rebase --onto master IABC Z
了,期待它能够将所有的分支桶移动G..Z
到master
. 但是我遇到了一堆与很久以前的提交相关的冲突(甚至在'funny_developers'开始之前)。而且我无法理解它们与实际 rebase 的关系(可能是因为他们已经重新初始化了 repo ......)。
无论如何,如果我找不到保留“两个历史”的解决方案,我倾向于为他们的所有工作制作差异,并将其作为单个补丁提交提供给master
.
svn - 如何解决 SVN 树冲突
我已经阅读了几天,试图找到一种使用 tortiseSVN 1.8 解决树冲突的方法。我有两个主干分支:
- 分支/3.1
- 分支/3.2
同样,这两个分支都脱离了树干。我们不在主干上进行“主线”开发。我正在尝试将更改从我们的 3.1 分支合并到我们的 3.2 分支。
3.1 中的代码经过了一些重构,3.2 分支中存在的许多文件夹在 3.1 分支中不再存在。此外,还有一些新工作将新文件夹添加到 3.2。问题是树冲突并没有给我解决冲突的方法,而只允许我接受工作副本。这似乎是一个严重的缺陷。我们正在做很多重构,我正在寻找一个可以将早期版本分支上的更改集成到后期版本分支中的过程。
有人可以告诉我处理这个问题的最佳方法吗?
svn - 为什么这个 Subversion 合并会导致树冲突而不是合并冲突?
问题
我本来预计文件中会发生合并冲突,a.txt
因为它的第 2 行同时更改trunk
了branch/featurex
。
- 为什么我会遇到树冲突而不是合并冲突?
- 如何显示冲突?
svn diff
? - 我该如何解决这个冲突?
重现情况的示例
要重现树冲突,您可以对 and 进行更改trunk
并branches/featurex
尝试合并trunk
到branches/featurex
.
创建一个分支:
在主干上提交更改:
在分支上提交更改(在同一行以创建合并冲突):
将主干合并到分支:
它就是:意外的树冲突。
的内容a.txt
不显示任何合并冲突的合并,它只显示具有此内容的“分支版本”:
版本
Subversion 版本 1.7.8 (r1419691) 于 2012 年 12 月 12 日 21:11:09 编译
svn - svn 标签在合并期间不断被修改
我svn
在 Windows 7 上运行客户端。我使用 TortoiseSVN,但主要依赖于命令行客户端。
我从那里创建了自己的分支cr0
,并对trunk
那里的文件进行了一些本地更改。trunk
当我使用命令将这些文件合并回
svn merge -r2000:3000 local\path1\cr0 local\path2\trunk
正如预期的那样,trunk
获得了正确的文件。
现在我正在尝试将其他一些更改(没有触及我的文件)合并回cr0
使用
svn merge -r2000:4000 local\path2\trunk local\path1\cr0
在原始合并中更改的相同文件现在更改标签cr0
- 为什么会发生这种情况以及如何摆脱它?
我尝试接受更改,并尝试立即合并回,以及now change 标记中trunk
的那些。trunk
这发生在从cr0
to的每次合并中,trunk
反之亦然。有很多文件不会发生这种情况(我认为这应该是预期的行为)。
如何阻止这些文件在每次合并时更改标签?非常感谢
svn - 合并重命名文件夹时的SVN树冲突
我正在使用 TortoiseSVN 将来自trunk的最新更改合并到branch-B中,包括文件夹重命名。
在此之前,我将branch-A重新集成到trunk中。在该分支中,一个文件夹已被重命名,并且其中的文件已被更改。Branch-B包含对这些文件的不同修订,但该文件夹仍具有原始名称。
当将主干合并到branch-B时,SVN 只需将重命名的文件夹添加为新文件夹,并在最初命名的文件夹上报告树冲突。文件修订本身永远不会合并,我只剩下两个文件夹。我尝试了多种选项来获得最干净的合并,同时保留所有适当的 svn:mergeinfo,但似乎没有任何效果。
有人知道干净地完成此合并的正确方法吗?
TortoiseSVN 1.8.10,颠覆 1.8.11
这是一个视觉效果:
TL;DR:当包含文件夹在其中一个分支中重命名时,我如何干净地合并两个分支之间的文件修订?
svn - TortoiseSVN - 合并 - 新文件夹导致树冲突
将分支 A 合并到分支 B(本地工作副本),其中分支 A 添加了几个带有新文件的新文件夹。新文件夹都被标记为“树冲突”并显示错误消息:“最后一次合并操作试图修改目录'[文件夹名称]',但该目录在本地丢失。”
不开玩笑,它在本地丢失,它是在另一个分支中创建的,应该与其中的所有文件/文件夹一起复制到本地工作分支中!
我对什么是树冲突有一个合理的理解,我认为这不应该是一个。A 中的新文件夹在 B 中从未存在过!
我能做些什么?使用 WinMerge 在两个分支之间进行比较并仅选择“显示左侧唯一项”很容易出错,因为在 B 中删除的文件未在 A 中删除。
svn - 合并结构更改时避免树冲突
我已经建立了一个分支来对网站进行一些清理和结构更改。主干的内容只是网站文件,如下所示(为简洁起见):
分支之后,我将内容下移了一级,并为非网站内容(主要是 PSD 文件)创建了另一个目录,但我仍然需要保留和使用这些目录。现在的结构是:
如何在没有大量树冲突的情况下将其干净地合并回树干?我确定我以前做过。问题是,我这辈子都不记得是怎么回事了。
自从创建分支以来,我对树干进行了许多更改,因此我被树冲突淹没了。
我很高兴在这一点上接受一个不太理想的解决方案,所以我的备份计划是忘记合并,而是svn move
在主干上执行类似的东西/branches/old-trunk/
,然后svn move
清理分支进入/trunk/
并从那里去。
除了必须手动将主干更改应用到清理分支之外,这样做是否会有任何令人讨厌的副作用?
svn - svn reintegrate 给出了奇怪的冲突
我无法使用 Tortoise SVN (v 1.7.13) 将功能分支重新集成回主干。项目 A 在主干中进行了一些工作,而对于我们需要并行完成的其他一些工作,我们创建了一个分支。现在分支工作已经完成,我们正在尝试将其重新集成到主干中。
我做了以下步骤:
1 - 结帐中继
2 - 合并/重新集成分支
3 - 解决冲突
4 - 提交
这是我不明白的。
1 - 我遇到的冲突 3 没有意义。它表示从分支中删除了一个文件夹,但该文件夹在分支或主干中不存在。
2 - 提交后,如果我再次合并/重新集成,所有冲突都会回来。就像我从来没有做过一样。
svn - 如何解决重复文件添加中的 SVN 树冲突?
相同的文件(图像)独立地添加到主干和我当前的分支中,并在两者上签入。现在当我尝试从树干合并到我的分支时出现树冲突。解决此冲突的最简单方法是什么?(仅使用标准的“解决”不会做任何事情)
merge - 仅在主干中接触过的文件的树冲突
我正在尝试使用 Tortoise SVN 将功能分支合并回主干。
主干和分支都进行了许多更改,包括文件夹的删除和移动。
现在我希望 SVN 在分支中修改相同的文件或文件夹并在主干中删除/移动时报告树冲突,反之亦然。
但是,即使在合并的另一侧根本没有修改此文件,我也会为已在主干或分支中删除或移动的每个文件和文件夹报告树冲突。
因此,如果我在创建分支后删除了主干中的一个文件夹,并且根本没有人触及该文件夹或分支中的任何文件,那么在合并该更改时我仍然会遇到树冲突。
我什至在两个方向都遇到了冲突:我尝试将分支合并回主干,或者尝试将主干中的任何更改合并到分支中都没有关系。
我的客户端在 TortoiseSVN 1.8.11、Subversion 1.8.13 上,存储库在 1.6.17 版本上。
什么可能导致这些奇怪的树冲突,如何避免它们?