我有这种情况:
这是正确的方法吗?
在这个时刻,每当我想在同一个根中使用SVN时,我就会看到这个错误:
错误:错误的子树不允许合并跟踪; tryo恢复项目
当我想将我在本地合并的所有内容(从SVNBranch到LocalCopyOfTrunk)提交到Trunk时,我看到有问题的文件夹及其内容缺失状态.我标记了我想要提交的所有内容(没有丢失的东西),单击"确定",然后收到此警告:
移动/重命名文件夹的非递归提交(此提交不是递归的,并且已选择移动/重命名文件夹用于提交.此类移动/重命名始终在存储库中递归执行.您还要提交吗?)
当我打开有问题的根目录TortoiseSVN-> Revert的父文件夹并将其还原时,SVN再次运行没有问题.但我如何删除它们?解决这种树冲突的更好方法是什么?
在SVN中,我在合并两个分支时遇到了树冲突.出现树冲突是因为我在两个分支中添加了相同的文件或相同的目录.这里问的问题大致相同:
但是我需要接受传入的添加.Subversion只允许我接受存储库的工作状态.所以我希望我可以从B1到B2合并,删除B2中的本地添加文件,告诉svn将文件从B1添加(重新合并?)到B2,然后提交合并.是否有可能解决与传入版本的邪恶双重冲突?
这里的要点是接受传入的版本,这样当下一次从B1合并到B2时,我将自动合并更改,而不必进行相反的B2-> B1合并.
这更像是一个假设的问题,但我一直想知道为什么这个案子被认为是冲突.如果我在本地删除了一个已经从存储库中删除的目录,为什么这不会像你期望的那样解决?我不知道哪个角落的案例会使冲突地位成为必要?
我正在使用TortoiseSVN将来自trunk的最新更改合并到branch-B中,包括文件夹重命名.
在此之前,我将分支-A重新整合到主干中.在该分支中,已重命名文件夹并对其中的文件进行了更改.Branch-B包含对这些文件的不同修订,但该文件夹仍具有原始名称.
将trunk合并到branch-B时,SVN只是将重命名的文件夹添加为new,并在最初命名的文件夹上报告树冲突.文件修订本身永远不会合并,我留下了两个文件夹.我已经尝试了多个选项来获得最干净的合并,同时保留所有适当的svn:mergeinfo,但似乎没有任何效果.
有没有人知道干净地完成这个合并的正确方法?
TortoiseSVN 1.8.10,Subversion 1.8.11
这是一个视觉:
/trunk (before reintegrating branch-A)
  /Folder1
    file1
    file2
    file3
/trunk (after reintegrating branch-A)
  /Folder1-Renamed
    file1-change1
    file2-change1
    file3
/branch-B
  /Folder1
    file1-change2
    file2-change2
    file3
TL; DR:当在其中一个分支中重命名包含文件夹时,如何在两个分支之间干净地合并文件修订?
这是场景:
现在User1想要合并"abc.def"文件的更新版本.所以(使用TortoiseSVN 1.7.10),User1在Branch1的工作副本中启动,选择Merge...- > Reintegrate a Branch,然后选择Branch2并选择Merge.可以预见的是,"树冲突"的结果是这样的:
最后一次合并操作尝试从Branch2添加文件'abc.def',但该文件已在本地添加.你想如何解决这个冲突?
但唯一的选择是标有单个按钮Keep the local file.没有选择远程文件的选项,这是User1真正想要的.
我在这里做错了什么,我该如何解决?更具体地说,如何将User2的文件版本导入Branch1?
(当然,我确信User1可以在合并之前手动删除该文件,但这会消除User1可能想要保留的任何历史记录.此外,它只是一个笨重的工作流程,特别是在这种困境中存在大量文件时.)
不幸的是,在TortoiseSVN关于树冲突的文档中甚至没有提到这种情况
更新:
除了选择" Reintegrate a Branch"我还试过" Merge a Range of Revisions"和" Merge two different trees".对于后一种情况,我选择远程分支(Branch2)作为"开始",将本地分支作为目标(Branch1; 在添加文件之前选择修订版.)我在所有情况下得到了相同的结果:树冲突没有选择文件的User2版本的选项.
更新#2:
根据文档,应该在"合并进度对话框中有一个名为"的复选框Merge non-interactive,如果未选中,则应该在合并期间打开"合并冲突回调对话框".但是,我在合并过程中找不到任何此类复选框.它在哪里?
我正在尝试自动化一些Subversion进程,我遇到了冲突问题.当我合并两个分支时,有时我会遇到树冲突和常规(文本)冲突.我希望能够使用存储库副本解决所有问题:
svn resolve . -R --accept theirs-full
但如果有树木冲突,它会对我大喊大叫,并说我必须将它们解决到工作状态.
svn:警告:树冲突只能解析为"工作"状态; '文件'没有解决
有没有解决一个简单的方法只是树冲突"工作",这样我就可以继续解决与他们的满文的冲突?或者也许完全实现我的目标的另一种方式?我希望通过Windows命令行执行此操作.谢谢!
Subversion服务器是版本1.6.6
我正在使用CollabNet Subversion命令行客户端v1.6.13(适用于Windows)
我对颠覆很新,而且文档对我来说没有意义.我想知道是否有人可以将此错误消息(从svn st)分解为简单的英语,以及我得到的另一个local delete, incoming delete upon merge.
准确地说我的问题:
local add(或local delete)是指什么?incoming add(或incoming delete)是指什么?令我感到神秘的是,分支与接收这些错误的文件完全无关.换句话说,它不会在本地添加或删除任何这些文件(我认为这local add/delete意味着).此外,如果我在本地删除了文件,为什么这会与repo(incoming)中的删除冲突呢?
我是如何到达这里的:我合并trunk到了我的branch手中,并试图提交给我的分支机构.
PS我已经(尝试)阅读管理主干和功能分支:本地删除,合并时的传入删除,但是有太多的术语.我在这里读到的其他问题/答案似乎并不适用,或者很难理解.
我从SVN收到此错误消息:
svn:尝试添加已存在的树冲突
现在,已经在此站点上询问过这个问题,并且给出的解释是在上一次合并之后尚未解决树冲突,现在SVN正在尝试再次添加相同的树冲突.
所以我调用了"svn status"并将所有树冲突标记为已解决.然后我做了*svn revert -R**并仔细检查"svn status"的输出是否完全为空.然后我再次尝试合并,在完全相同的地方使用完全相同的错误消息.
在我看来,像svn尝试在同一个合并操作期间在同一个地方添加两次树冲突,在所有应有的尊重下,这将是SVN中的严重错误.
我使用Eclipse 8.6和Subclipse 1.6,以及svn 1.6.x服务器.我创建了一个分支,在分支和主干上做了一些更改,现在我正在尝试从trunk到这个分支合并.我得到的只是每个目录和分支根目录下的每个文件的树冲突.即使我的测试项目,除了编辑一个文件,我什么都没做,我得到了.问题是我不明白这些树冲突是什么意思,因为我没有改变任何东西.我只更改了一个文件进行测试,我应该在合并期间获取文件更新,但这只是被忽略了.我在合并窗口中看到的只是每个目录的树冲突图标和根目录下的每个文件.同样在Tree Conflics窗口下,它告诉我每个树冲突的"本地添加,合并时的传入添加".
基本上我已经阅读了git merge冲突指南,我不确定它是否直接解决了我的情况.我在子模块中存在冲突,我只想使用他们的版本,我理解的是git diff -3 app/bundles如何使用子模块的版本,解决冲突并提交?
~/projects/sms/admin(rc)$ git diff
diff --cc app/bundles
index 999fd0a,ae6acdc..0000000
--- a/app/bundles
+++ b/app/bundles
~/projects/sms/admin(rc)$ git diff -1 app/bundles
* Unmerged path app/bundles
diff --git a/app/bundles b/app/bundles
index b34a733..999fd0a 160000
--- a/app/bundles
+++ b/app/bundles
@@ -1 +1 @@
-Subproject commit b34a73375b4dfed6086d26d205ab5535acece053
+Subproject commit 999fd0a307e6d8d517ddf3dd6fab28a3ac0ec2c9
~/projects/sms/admin(rc)$ git diff -2 app/bundles
* Unmerged path app/bundles
~/projects/sms/admin(rc)$ git diff -3 app/bundles
* Unmerged path app/bundles
diff --git a/app/bundles b/app/bundles
index ae6acdc..999fd0a 160000
--- a/app/bundles
+++ b/app/bundles
@@ -1 …无论何时我尝试在SVN中合并,我都会遇到大量的树冲突.好吧,在这个示例脚本的情况下只有一个,但仍然.
#!/bin/bash
svnadmin create repo
svn checkout file://`pwd`/repo wc
cd wc
mkdir trunk branches
svn add trunk branches
svn commit -m 'created trunk and branches'
echo red > trunk/colors
svn add trunk/colors
svn commit trunk -m 'created trunk/colors with red inside'
svn copy trunk branches/a
svn commit branches/a -m 'created branches/a'
echo green >> trunk/colors
svn commit trunk -m 'added green to trunk/colors'
echo blue >> branches/a/colors
svn commit branches/a -m 'added blue to branches/a/colors'
svn update
svn merge ^/trunk …我正试图git merge master从另一个分支做一个,然后我遇到了这个冲突:
<<<<<<< HEAD
=======
    t.text     "label_en"
    t.text     "help_text_en"
    t.text     "options_en"
>>>>>>> master
我知道如何解决冲突,但我很好奇为什么git首先认为这是冲突,因为HEAD版本在特定行上没有内容.
<<<<<<< HEAD
=======
git只是从master中添加3行并合并它不是一个简单的例子吗?
更新:
@Marcin是对的.基于答案,我做了一个测试,假设我有一个如下所示的git树:
 A ---- B  (master)
      \
        C  (another branch)
的内容temp.txt在commit A:
    t.text    "LALALA"
的内容temp.txt在commit B:
    t.text    "label_en"
    t.text    "help_text_en"
    t.text    "options_en"
temp.txtin的内容commit C是空的.
在这一点上,如果我这样做:
git checkout another_branch
git merge master
然后我会得到以下内容:
<<<<<<< HEAD
=======
    t.text     "label_en"
    t.text     "help_text_en"
    t.text     "options_en"
>>>>>>> master