当前位置:首页 » 操作系统 » linuxsvn冲突解决

linuxsvn冲突解决

发布时间: 2022-05-06 20:58:20

❶ svn冲突怎么解决

通过SVN客户端更新需要的文件,如果出现有感叹号的文件,找到出现感叹号的文件。

选择感叹号文件,即冲突文件,单击鼠标右键对冲突文件进行编辑操作,如下图所示:

进入冲突编辑页面对出现问号的部分进行调整,如下图所示:

4
冲突文件调整过程中,可以选择使用自己的版本或对方版本或两个都使用,如下图所示:

5
完成后,点击上图【save】进行保存,至些svn的冲突文件就处理好了,重新提交就可以。

linux svn 冲突

我理解你的意思应该是说在服务器上有一个SVN的客户端,正常的话是从你本地客户端修改文件上传后,由SVN自动更新服务器上的这个客户端中的内容。但你直接修改了服务器上这个客户端中的文件,而且没有进行commit操作,随后在你本地客户端又修改了这个文件,commit后SVN自动更新服务器上那个客户端的文件时,报告发生了冲突。

如果是这个情况,你需要对服务器上那个SVN客户端中的文件进行手动处理,合并你两次修改的内容,然后用SVN对冲突的文件标记为“冲突已解决”,然后在服务器上那个SVN客户端执行commit操作。完了以后记得在你本地客户端update一下,否则你在本地再改这个文件并commit的时候,本地也会报告发生冲突。

❸ svn如何解决分支冲突

1、 如何产生冲突

当开发人员A和开发人员B从版本库同时检出文档1.txt,而A和B同时修改了1.txt的同一地方,后提交的一方会在拷贝副本中产生冲突。

两个工作拷贝,A拷贝中文件1.txt内容为

dfqerq
123dfwre

B拷贝中文件1.txt内容为

dfqerq
123erwrq

在B版本提交之前版本库上的1.txt(base版本)内容为

dfqerq

B拷贝先提交版本到版本库中,以至于最新版本内容变为

dfqerq
123erwrq

此时A版本也提交则会产生冲突,无法提交,需要先svn

update,此时会在A拷贝中产生三个临时文件1.txt.rNew\1.txt.rOld\1.txt.mine,其中1.txt.rNew是最新版
本,1.txt.rOld是base版本,1.txt.mine是A作者修改后的版本,在此例中内容为

dfqerq
123dfwre

而update之后A拷贝中的1.txt内容为

<<<<<<< .mine
dfqerq
123dfwre=======
dfqerq
123erwrq>>>>>>> .r18

其中<<<<<<< .mine与=======之间表示A修改后的内容,=======与>>>>>>> .r18之间是版本服务器上的版本

2、解决冲突

第一种,利用update的选项进行冲突解决,也就是说不管当前拷贝副本是否是最新版本,都使用—accept参数作为冲突处理方式

–accept ARG : specify automatic conflict resolution action
(‘postpone’, ‘base’, ‘mine-conflict’,
‘theirs-conflict’, ‘mine-full’, ‘theirs-full’,
‘edit’, ‘launch’)

(p) postpone – mark the conflict to be resolved later //让文件在更新完成之后保持冲突状态。
(df) diff-full – show all changes made to merged file //使用标准区别格式显示base修订版本和冲突文件本身的区别。
(e) edit – change merged file in an editor //用你喜欢的编辑器打开冲突的文件,编辑器是环境变量EDITOR设置的。
(r) resolved – accept merged version of file //完成文件编辑之后,通知svn你已经解决了文件的冲突,它必须接受当前的内容—从本质上讲就是你已经“解决了”冲突。
(mf) mine-full – accept my version of entire file (ignore their change//丢弃新从服务器接收的变更,并只使用你查看文件的本地修改。
(tf) theirs-full – accept their version of entire file (lose my changes)//丢弃你对查看文件的本地修改,只使用从服务器新接收的变更。
(l) launch – launch external tool to resolve conflict//启动一个外置程序来执行冲突解决,这需要一些预先的准备。
(h) help – show this list //显示所有在冲突解决时可能使用的命令。

第二种,在update时并不处理冲突,利用svn resolve解决冲突

1、利用svn resolve –accept base选择base版本,即1.txt.rOld作为最后提交的版本

–accept ARG : specify automatic conflict resolution source
(‘base’, ‘working’, ‘mine-conflict’,
‘theirs-conflict’, ‘mine-full’, ‘theirs-full’)

2、手工修改1.txt文件,然后将当前拷贝即1.txt作为最后提交的版本

svn resolve –accept working 1.txt

3、svn resolve –accept theirs-full 1.txt 使用1.txt.rNew作为最后提交的版本

4、svn resolve –accept mine-full 1.txt 使用1.txt.mine作为最后提交的版本

5、svn resolve –accept mine-conflict 1.txt 使用1.txt.mine的冲突部分作为最后提交的版本

5、svn resolve –accept theirs-conflict 1.txt 使用1.txt.rNew的冲突部分作为最后提交的版本

第三种,使用svn revert取消变更

(以上文章来源:http://blog.sina.com.cn/s/blog_65fd4c1e0100h2cg.html)

-----

前两天在解决冲突时用到了svn resolve这个命令,找到这篇文章主要是因为他对–accept参数的说明比较全

比官方的文档更详细。

svn文件冲突,树冲突详解

解决冲突

偶尔,当你从版本库更新、合并文件时,或者切换工作副本至一个不同的 URL 时你会遇到冲突。有两种冲突:

文件冲突

当两名(或更多)开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突。

树冲突

当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。

文件冲突

当两名或更多开发人员修改了同一个文件中相邻或相同的行时就会发生文件冲突。由于 Subversion 不知道你的项目的具体情况,它把解决冲突的工作留给了开发人员。一旦出现冲突,你就应该打开有问题的文件,查找以字符串<<<<<<<开头的行。有冲突的区域用如下的方式标记:

<<<<<<< 文件名
你的修改
=======
合并自版本库中的代码
>>>>>>> 版本

对于每个冲突的文件 Subversion 在你的目录下放置了三个文件:

文件名.ext.mine

这是你的文件,在你更新你的工作副本之前存在于你的的工作副本中——也就是说,没有冲突标志。这个文件除了你的最新修改外没有别的东西。

文件名.ext.r旧版本

这是在你更新你的工作副本之前的基础版本(BASE revision)文件。也就是说,它是在你做最后修改之前所检出的文件。

文件名.ext.r新版本

这个文件是当你更新你的工作副本时,你的 Subversion 客户端从服务器接收到的。这个文件对应于版本库中的最新版本。

你可以通过TortoiseSVN → 编辑冲突运行外部合并工具/冲突编辑器,或者你可以使用任何别的编辑器手动解决冲突。你需要冲定哪些代码是需要的,做一些必要的修改然后保存。

然后,执行命令TortoiseSVN → 已解决并提交人的修改到版本库。需要注意的是已解决命令并不是真正的解决了冲突,它只是删除了filename.ext.mine和filename.ext.r*两个文件,允许你提交修改。

如果你的二进制文件有冲突,Subversion不会试图合并文件。本地文件保持不变(完全是你最后修改时的样子),但你会看到filename.ext.r*文件。如果你要撤消你的修改,保留版本库中的版本,请使用还原(Revert)命令。如果你要保持你的版本覆盖版本库中的版本,使用已解决命令,然后提交你的版本。

你可以右击父文件夹,选择TortoiseSVN → 已解决...,使用“已解决”命令来解决多个文件。这个操作会出现一个对话框,列出文件夹下所有有冲突的文件,你可以选择将哪些标记成已解决。

树冲突

当一名开发人员移动、重命名、删除一个文件或文件夹,而另一名开发人员也对它们进行了移动、重命名、删除或者仅仅是修改时就会发生树冲突。有很多种不同的情形可以导致树冲突,而且不同的情形需要不同的步骤来解决冲突。

当一个文件通过 Subversion 在本机删除后,文件也从本机文件系统中删除。因此即使它是树冲突的一部分,却既不能显示冲突的叠加图标也不能通过右键单击来解决冲突。使用检查修改对话框来获得编辑冲突选项。

TortoiseSVN 能够协助找到合并更改的正确位置,但是需要作一些额外的工作来整理冲突。请牢记: 当进行一次更新操作后,工作副本的基础文件将会包括每一个项目在执行更新操作时版本库中的版本。如果你在进行更新后再撤销更改,工作副本将返回到版本库的 状态,而不是你开始进行更改前的状态。

本地删除,当更新时有更改进入

开发人员 A 修改 Foo.c 并将其提交至版本库中

开发人员 B 同时在他的工作副本中将文件 Foo.c 改名为 Bar.c,或者仅仅是删除了 Foo.c 或它的父文件夹。

更新开发人员 B 的工作副本会导致树冲突:

在工作副本中,Foo.c 被删除了,但是被标记为树冲突。

如果冲突是由于更改文件名引起的而不是删除文件引起的,那么 Bar.c 被标记为添加,但是其中却不包括开发人员 A 修改的内容。

开发人员 B 现在必须做出选择是否保留开发人员 A 的更改。在更改文件名的案例中,他可以将 Foo.c 的更改合并到改名后的文件 Bar.c 中去。对于删除文件或文件夹的案例中,他可以选择保留包含开发人员 A 更改内容的项目并放弃删除操作。或什么也不做而直接将冲突标记为已解决,那样他实际上丢弃了开发人员 A 的更改。

如果 TortoiseSVN 能够找到被改名为 Bar.c 的原始文件,冲突编辑对话框将可以合并更改。这取决于在什么地方调用更新操作,它也许不能找到原始文件。

本地更改,当更新时有删除进入

开发人员 A 将文件 Foo.c 改名为 Bar.c 并将其提交至版本库中。

开发人员 B 在他的工作副本中修改文件 Foo.c。

或者在一个文件夹改名的案例中...

开发人员 A 将父文件夹 FooFolder 改名为 BarFolder 并将其提交至版本库中。

开发人员 B 在他的工作副本中修改文件 Foo.c。

更新开发人员 B 的工作副本会导致树冲突。对于一个简单的文件冲突:

Bar.c 被当作一个正常文件添加到工作副本中。

Foo.c 被标记为添加(包括其历史记录)并且产生树冲突。

对于一个文件夹冲突:

BarFolder 被当作一个正常文件夹添加到工作副本中。

FooFolder 被标记为添加(包括其历史记录)并且产生树冲突。

Foo.c 被标记为已修改。

开发人员 B 现在需要做出决定是否接受开发人员 A 作出的结构改变并且合并她的更改到新结构下适当的文件中,或者直接放弃开发人员 A 的更改并保留本地文件。

要合并她的本机更改到新布局中,开发人员 B 必须先找出冲突的文件 Foo.c 经过改名/移动后在版本库中的新文件名是什么。可以使用日志对话框来完成这个任务。更改必须要手工合并,因为没有办法自动的或者简单的完成此操作。一旦更改移植完毕,冲突的路径就是多余的并且可以删除。在此案例中,使用冲突编辑对话框中的删除按钮进行清理并将冲突标记为已解决。

如果开发人员 B 认为 A 的更改是错误的,那么在冲突编辑对话框中她必须选择保留按钮。这样就会标记冲突的文件/文件夹为已解决,但是需要手工删除开发人员 A 的更改。又是通过日志对话框帮助追踪哪些文件移动了。

本地删除,当更新时有删除进入

开发人员 A 将文件 Foo.c 改名为 Bar.c 并将其提交至版本库中。

开发人员 B 将文件 Foo.c 改名为 Bix.c

更新开发人员 B 的工作副本会导致树冲突:

Bix.c 被标记为添加(包括其历史记录)。

Bar.c 被添加到工作副本中,其状态为‘正常’。

Foo.c 被标记为删除并且产生一个树冲突。

要解决这个冲突,开发人员 B 必须找出冲突的文件 Foo.c 经过改名/移动后在版本库中的新文件名是什么。可以使用日志对话框来完成这个任务。

然后,开发人员 B 需要决定 Foo.c 的新文件名中的哪一个需要保留 - 开发人员 A 改的那个还是他自己改的那个。

在开发人员 B 手工解决冲突后,使用冲突编辑对话框中的按钮将树冲突标记为已解决。

本地缺少,当合并时有更改进入

开发人员 A 在主干上工作,修改 Foo.c 并将其提交至版本库中

开发人员 B 在分支上工作,将 Foo.c 改名为 Bar.c 并将其提交至版本库中

合并开发人员 A 的主干更改到开发人员 B 的分支工作副本会导致树冲突:

Bar.c 已经存在于工作副本中,其状态为‘正常’。

Foo.c 被标记为缺少并产生树冲突。

要解决这个冲突,开发人员 B 要在冲突编辑对话框中标记文件为已解决,这样就会将其从冲突列表中删除。她接下来需要决定是否将缺少的文件 Foo.c 从版本库中复制到工作副本中,是否将开发人员 A 的对 Foo.c 的更改和合并到改名后的 Bar.c 或者是否通过标记冲突为已解决来忽略更改什么事也不做。

注意,如果你将缺少的文件从版本库中复制到工作副本中然后再标记为已解决,你复制下来的文件将被再次删除。你必须先解决冲突。

本地更改,当合并时有删除进入

开发人员 A 在主干上工作,将 Foo.c 改名为 Bar.c 并将其提交至版本库中

开发人员 B 在分支上工作,修改 Foo.c 并将其提交至版本库中

当文件夹改名时有类似的案例,但是在 Subversion 1.6 中还未被识别...

开发人员 A 在主干上工作,将父文件夹 FooFolder 改名为 BarFolder 并将其提交至版本库中。

开发人员 B 在分支上工作,在她的工作副本中修改 Foo.c 。

合并开发人员 A 的主干更改到开发人员 B 的分支工作副本会导致树冲突:

Bar.c 被标记为添加。

Foo.c 被标记为修改并产生树冲突。

开发人员 B 现在需要做出决定是否接受开发人员 A 作出的结构改变并且合并她的更改到新结构下适当的文件中,或者直接放弃开发人员 A 的更改并保留本地文件。

要合并她的本机更改到新布局中,开发人员 B 必须先找出冲突的文件 Foo.c 经过改名/移动后在版本库中的新文件名是什么。可以通过适用于合并源码的日志对话框来完成这个任务。冲突编辑器仅显示工作副本的日志因为它不知道将哪个路 径的更改合并进来,所以你需要自己找到它。更改必须要手工合并,因为没有办法自动的或者简单的完成此操作。一旦更改移植完毕,冲突的路径就是多余的并且可 以删除。在此案例中,使用冲突编辑对话框中的删除按钮进行清理并将冲突标记为已解决。

如果开发人员 B 认为 A 的更改是错误的,那么在冲突编辑对话框中她必须选择保留按钮。这样就会标记冲突的文件/文件夹为已解决,但是需要手工删除开发人员 A 的更改。又是通过日志对话框帮助追踪哪些文件移动了。

本地删除,当合并时有删除进入

开发人员 A 在主干上工作,将 Foo.c 改名为 Bar.c 并将其提交至版本库中

开发人员 B 工作在分之上,将 Foo.c 改名为 Bix.c 并将其提交至版本库中

合并开发人员 A 的主干更改到开发人员 B 的分支工作副本会导致树冲突:

Bix.c 被标记为正常(未修改)状态。

Bar.c 被标记为添加(包括其历史记录)。

Foo.c 被标记为缺少并且产生树冲突。

要解决这个冲突,开发人员 B 必须先找出冲突的文件 Foo.c 经过改名/移动后在版本库中的新文件名是什么。可以通过适用于合并源码的日志对话框来完成这个任务。冲突编辑器仅显示工作副本的日志因为它不知道将哪个路径的更改合并进来,所以你需要自己找到它。

然后,开发人员 B 需要决定 Foo.c 的新文件名中的哪一个需要保留 - 开发人员 A 改的那个还是他自己改的那个。

在开发人员 B 手工解决冲突后,使用冲突编辑对话框中的按钮将树冲突标记为已解决。

❹ svn有冲突怎么解决

在团队开发中很多情况都会出现,下面就来一个一个的讲解一下svn中的一下应用,以及遇到问题后如何解决。在Myeclipse中一定要有安装svn,可以在线安装也可以离线安装。
项目一定要是在svn中检出出来的,还有就是做过修改的,不管会别人修改的还是自己修改的,这样才能看出来有没有差别,然后右击项目找打Team的与资源库同步,这样就能进入同步的界面,我们就从这里开始分析。
在途中最重要的是要分析一下这个区域的东西。

分析:第一个图标是重新同步,如果在你同步的过程中还有人提交了文件,那么点击这个就会重新同步;第二:一个加号的那个是你自己有没有添加文件,如果有添加的文件上就会出现一个加号图标,减号也一样,如果你删除了文件上一样会出现一个减号的图。第三:蓝色的图标是别人提交的东西;第四:想右的灰色箭头是你要提交的东西或者是修改的东西;第五:如果是全部的;而第六个红色的箭头的是别人的东西和你提交的东西改到了同一个地方。
其实红色箭头是需要处理的,这是需要双击文件,如果在两个文件区域没有红色的区域那就可以直接更新,然后在提交,如果有红色的区域,你需要解决一下冲突,你可以把你写的东西换到其他的行中,这样就不会冲突了,也可以两个改的相通即可。

❺ 试用svn时遇到文件冲突时怎么处理

冲突有很多情况:
你update代码并修改了,你提交前,别人已经修改并提交了,当你再提交就会有冲突;
最后把冲突的文件备份,然后更新库上最新的到本地。再把自己的代码合并进去就好了。

❻ 怎样处理SVN的提交代码冲突

方法/步骤

1
我个人认为不管是提交、更新、编辑冲突第一个操作都应该是和资源库进行同步,项目右键==》Team==>于资源库同步(这里需要注意的是你的开发环境中已经正常集成了SVN,可以直接在myeclipse中使用)具体操作如下图

2
与SVN资源库同步后,就会在界面上显示如你当前的项目需要更新多少文件、提交多少文件。如下图:

3
到这里我们知道了情况后就是操作顺序的问题,我个人建议先更新没有冲突的文件到本地,再编辑冲突文件、最后测试确认无问题再提交到SVN上。在这个界面上更新和提交的操作我就不详细说明了,我这里想详细说说编辑冲突。如下图

4

上面的图片中需要重点说明的是图片2和3.编辑冲突是会出现蓝色和红色的对比框。蓝色的可以点击中间的小正方形从服务器移动到本地,红色的移动后还得手动
修改成一样的,要不然还会出现冲突。这些事做完了保存一下,要保证你本地的已经有的部分和服务器上一致,这次修改或者需要提交的是服务器上没有的。到这里
还要像图3那样标记一下为合并。
5
最后一步其实就是提交,但是我建议在提交之前还是本地运行一下看看有没有运行错误、报错之类的。确认没有问题后就回到那个资源库对比界面选择提交。
http://jingyan..com/article/6b97984dbe8d881ca2b0bfc0.html

❼ 在linux中更新svn 总是出现这个是什么问题求大神解答

skipped '.' 表示当前目录出现冲突了哦,处理方法:
1.退到上一层执行svn cleanup清除;
2.第一种解决不了,在使用此方法,.退到上一层执行svn revert 后面跟你现在所在的路径,中间不要截断,直到该命令运行完成停止,在执行svn up就可以了;

❽ 更新本地文件到SVN中时有冲突如何解决

有冲突一般是可能本地与主SVN服务器都修改了同一处地方。
解决方法,可先把本地的冲突文件删除掉,再重新从SVN更新下来到本地。然后你再修改提交,应该就没有问题了。
所以SVN协同工作时 一定要养成先更新 再提交的好习惯。希望可以帮到你。

热点内容
工业级安卓主板价格怎么样 发布:2024-10-07 14:07:57 浏览:625
编程先乘除 发布:2024-10-07 13:58:45 浏览:268
编译内核时发生循环编译 发布:2024-10-07 13:58:43 浏览:494
当下笔记本电脑什么配置好 发布:2024-10-07 12:57:33 浏览:468
安卓倒车轨迹怎么调 发布:2024-10-07 12:54:47 浏览:913
问道刷道队伍怎么配置 发布:2024-10-07 12:09:17 浏览:324
androidservice使用 发布:2024-10-07 12:00:01 浏览:262
乐视2安卓版本怎么升级 发布:2024-10-07 11:51:11 浏览:696
方舟电脑版怎么进入官方服务器 发布:2024-10-07 11:09:32 浏览:807
百度云快速上传 发布:2024-10-07 10:52:25 浏览:482