㈠ 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 手工解决冲突后,使用冲突编辑对话框中的按钮将树冲突标记为已解决。
㈡ 如何在MAC环境下使用svn,以及新手在团队使用svn注意事项
1、Xcode4中苹果有自带的SVN软件------>Organizer------>Repositories
2、SVN checkout到本地后,删除本地file,对服务器有影响吗?
不会影响服务器,当你执行“svn update”时会zai再次被自动下载;当删除后再执行“svn commit”就会在服务器上也对应删除。
3、连接服务器
点击file-》repositories-》点击坐下边的“+”-》然后名字及svn服务器的地址,还有type选中subversion然后next等等了。
4、Xcode4下,SVN中常用命令
Commit 提交
checkout 将服务器上下载到本地(我个正在使用的电脑)
update 更新文件
File------->SourceController------->update
图片中第3个按钮,是视图对比按钮。
5、SVN中用法详解和注意事项
①提交自己的代码
SVN更新的原则是要及时更新,及时提交。当完成了一个小功能,能够通过编译并且并且自己测试之后,尽量早的提交,这样也保存了历史版本,必要时候可以回滚;在开始一天的工作之前,最后update一下项目。
②保持原子提交(不要不经意间修改并提交了别人的文件)
仅提交你修改的部分,最好不要一下子将整个项目提交;
当完成一个功能或文件后,最好提交。我就遇到完成某个功能后,没有提交,后来又做了更改,结果代码出现bug,无法恢复到正常时的代码。
③不要提交自动生成的文件
VisualStudio等开发工具在生成过程中会产生很多自动文件,如。suo等配置文件,Debug,Release,Obj等编译文件,以及其他的一些自动生成,同编译代码无关的文件,这些文件在提交的时候不应该签入,如果不小心签入了,需要从仓库中删除。
④不要提交不能通过编译的代码
代码在提交之前,首先要确认自己能够在本地编译。进行SVN提交更新时最好是代码在提交前已经通过自己的测试。
SVN中常用命令详解
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
2、往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
3、删除文件
svn delete path -m “delete test fle”
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete testfile”
4、查看日志
svn log path
5、比较差异
svn diff path(将修改的文件与基础版本比较)
6、将两个版本之间的差异合并到当前文件
svn merge -r m:n path
SVN使用方法
更新(update),经常地update没有坏处,特别是多人项目中。如果每次提交(commit)前不进行更新(update)的到最新的版本的话,svn会提示当前的拷贝过期,需要更新。
提交(commit),一定要写上这次提交的内容的摘要,便于以后查阅。
将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
svn update命令自动用服务器上的版本替换本地版本控制的文件
6、Xcode中使用SVN问题以及提交解决冲突问题
Xcode的SVN功能,和Eclipse中的subclipse或者windows下的tortoiseSVN比较起来功能还差很多。
我是索性不用的,直接用命令行。我看有的朋友是用subclipse,其实也挺好,不过,为了使用SVN功能要单独开一个耗费资源的Eclipse。
但是,不论使用什么SVN工具,都会遇到Xcode固有的问题,即project.pbxproj文件的提交冲突问题。
project.pbxproj文件里面包含了构建过程所需的所有文件,如果你在项目目录下增加了新文件,比如没有通过Xcode,该文件就不在project.pbxproj文件中,就不会生成到app中。同理,如果你从SVN中更新到其他项目成员增加的文件,而没有更新project.pbxproj文件(或者该成员根本就没有提交这个文件),则也会出现相同的现象。
如果项目成员提交了新的project.pbxproj文件,你这边没有在项目中增加新的文件,直接svn update就可以了。
7、Xcode中更新代码后项目文件打不开
若选择更新整个项目经常会出现冲突问题,尤其是project.pbxproj文件。此文件包含了构建过程所需的所有文件,如果在项目目录下增加了新文件,但没有通过Xcode,
该文件就不在project.pbxproj文件中,就不会生成到app中。同理,如果从SVN中更新到其他项目成员增加的文件,
而没有更新project.pbxproj文件(或者该成员根本就没有提交这个文件),则也会出现相同的现象。这一文件冲突将直接导致项目文件打不开。
解决更新代码后打不开项目文件方法:
当项目文件如tobacco.xcodeproj打不开时可以右键选择‘显示包内容’,会看到有三个文件,project.pbxproj/user.modelv3/user.pbxuser。
其中project.pbxproj有三个版本,和解决普通svn文件冲突一样解决冲突即可。
8、SVN 更新 提交 合并 区别
当本地文件没有改动,服务器文件改动的时候,更新会从服务器取文件覆盖当前文件
当本地文件有改动,服务器文件没改动的话,不会更新此文件
当本地文件有改动,服务器文件有改动的话,如果改动的部分不冲突,就会合并文件到本地,如果有冲突的话,会提示文件冲突,需要自己手动修改以后上传到服务器。
最后一个讲解合并:
服务器和本地的同一个文件(所谓同一个文件应该就是SVN相对路径相同,文件名相同的文件,这个由SVN留在本地的信息决定)已经修改,且修改的部分不重合,不重叠
当满足上面的条件的时候再更新,SVN就会自动合并
SVN的奥妙之处就在于别人提交了修改后的文件,你再提交你的话,他是不允许你提交滴……
>>>>
<<<
里面标记的是冲突的区域,把冲突区域删除掉为什么还不能提交
解决办法1:
删掉的话还是没有解决冲突,文件后面还会有几个文件名相同,但是后缀不同的文件
如果你不知道用SVN解决冲突的话,最简单的办法是这样的
把这个文件改名字,然后在文件所在目录更新,这样就会把服务器文件下下来,然后把自己修改的部分添加到更新的文件里面,这样就可以提交了
解决办法2:
在文件上面点击右键,到SVN的菜单,应该有编辑冲突的按钮,选择就会出现一个窗口,一边是服务器版本,一边是自己修改的版本 。
9、xcode自带svn的使用
1、代码中 某文件后面有 “M” 标记,表示该文件已被修改,需要 commit.
(右键该文件 -> source control -> commit selected file…)
2、代码中 某文件后面有 “A” 标记,表示该文件是新添加的,已受SVN管理,需要 commit.
(右键该文件 -> source control -> commit selected file…)
3、代码中 某文件后面有 “?” 标记,表示该文件是新添加的,并且脱离了SVN的管理,首先需要add,然后 commit.
(右键该文件 -> source control -> Add,这样该文件的标记就变为 “A”,然后在 commit)。
㈢ mac下svn怎么checkout
1、Xcode4苹自带SVN软件------>Organizer------>Repositories
2、SVN checkout本删除本file服务器影响?
影响服务器执行svn updatezai再自载;删除再执行svn commit服务器应删除
3、连接服务器
点击file-》repositories-》点击坐边+-》名字及svn服务器址type选subversionnext等等
4、Xcode4,SVN用命令
Commit 提交
checkout 服务器载本(我使用电脑)
update 更新文件
File------->SourceController------->update
图片第3按钮,视图比按钮.
5、SVN用详解注意事项
①提交自代码
SVN更新原则要及更新及提交完功能能够通编译并且并且自测试尽量早提交保存历史版本必要候滚;始工作前update项目
②保持原提交(要经意间修改并提交别文件)
仅提交修改部要整项目提交;
完功能或文件提交我遇完某功能没提交做更改结代码现bug恢复代码
③要提交自文件
VisualStudio等发工具程产自文件.suo等配置文件Debug,Release,Obj等编译文件及其些自同编译代码关文件些文件提交候应该签入签入需要仓库删除
④要提交能通编译代码
代码提交前首先要确认自能够本编译进行SVN提交更新代码提交前已经通自测试
SVN用命令详解
1、文件checkout本目录
svn checkout path(path服务器目录)
例:svn checkout svn://192.168.1.1/pro/domain
2、往版本库添加新文件
svn add file
例:svn add test.php(添加test.php)
3、删除文件
svn delete path -m delete test fle
例:svn delete svn://192.168.1.1/pro/domain/test.php -m delete testfile
4、查看志
svn log path
5、比较差异
svn diff path(修改文件与基础版本比较)
6、两版本间差异合并前文件
svn merge -r m:n path
SVN使用
更新(update)经update没坏处特别项目每提交(commit)前进行更新(update)新版本svn提示前拷贝期需要更新
提交(commit)定要写提交内容摘要便于查阅
文件checkout本目录
svn checkout path(path服务器目录)
svn update命令自用服务器版本替换本版本控制文件
6、Xcode使用SVN问题及提交解决冲突问题
XcodeSVN功能Eclipsesubclipse或者windowstortoiseSVN比较起功能差
我索性用直接用命令行我看朋友用subclipse其实挺使用SVN功能要单独耗费资源Eclipse
论使用SVN工具都遇Xcode固问题即project.pbxproj文件提交冲突问题
project.pbxproj文件面包含构建程所需所文件项目目录增加新文件比没通Xcode该文件project.pbxproj文件app同理SVN更新其项目员增加文件没更新project.pbxproj文件(或者该员根本没提交文件)则现相同现象
项目员提交新project.pbxproj文件边没项目增加新文件直接svn update
7、Xcode更新代码项目文件打
若选择更新整项目经现冲突问题尤其project.pbxproj文件文件包含构建程所需所文件项目目录增加新文件没通Xcode
该文件project.pbxproj文件app同理SVN更新其项目员增加文件
没更新project.pbxproj文件(或者该员根本没提交文件)则现相同现象文件冲突直接导致项目文件打
解决更新代码打项目文件:
项目文件tobacco.xcodeproj打右键选择'显示包内容'看三文件project.pbxproj/user.modelv3/user.pbxuser
其project.pbxproj三版本解决普通svn文件冲突解决冲突即
8、SVN 更新 提交 合并 区别
本文件没改服务器文件改候更新服务器取文件覆盖前文件
本文件改服务器文件没改更新文件
本文件改服务器文件改改部冲突合并文件本冲突提示文件冲突需要自手修改传服务器
讲解合并:
服务器本同文件(所谓同文件应该SVN相路径相同文件名相同文件由SVN留本信息决定)已经修改且修改部重合重叠
满足面条件候再更新SVN自合并
SVN奥妙处于别提交修改文件再提交允许提交滴
>>>>
<<<
面标记冲突区域冲突区域删除掉能提交
解决办1:
删掉没解决冲突文件面几文件名相同缀同文件
知道用SVN解决冲突简单办
文件改名字文件所目录更新服务器文件自修改部添加更新文件面提交
解决办2:
文件面点击右键SVN菜单应该编辑冲突按钮选择现窗口边服务器版本边自修改版本
9、xcode自带svn使用
1、代码 某文件面 M 标记表示该文件已修改需要 commit.
(右键该文件 -> source control -> commit selected file...)
2、代码 某文件面 A 标记表示该文件新添加已受SVN管理需要 commit.
(右键该文件 -> source control -> commit selected file...)
3、代码 某文件面 ? 标记表示该文件新添加并且脱离SVN管理首先需要add commit.
(右键该文件 -> source control -> Add该文件标记变 A commit).
㈣ svn命令使用方法
在svn
commit后面可以附加参数指定路径的,这个路径你指定为这单个文件就行了
svn
commit
[path...]
使用svn
help
commit查看commit指令的详细帮助
另外如果用tortoisesvn等客户端的话,在这单个文件上点右键,然后选择commit菜单就行了
㈤ mac自带的svn怎么请求windows下的svn的代码
1、Xcode4中苹果有自带的SVN软件------>Organizer------>Repositories 2、SVN checkout到本地后,删除本地file,对服务器有影响吗? 不会影响服务器,当你执行“svn update”时会zai再次被自动下载;当删除后再执行“svn commit”就会在服务器上也对应删除。 3、连接服务器 点击file-》repositories-》点击坐下边的“+”-》然后名字及svn服务器的地址,还有type选中subversion然后next等等了。 4、Xcode4下,SVN中常用命令 Commit 提交 checkout 将服务器上下载到本地(我个正在使用的电脑) update 更新文件 File------->SourceController------->update 图片中第3个按钮,是视图对比按钮. 5、SVN中用法详解和注意事项 ①提交自己的代码 SVN更新的原则是要及时更新,及时提交。当完成了一个小功能,能够通过编译并且并且自己测试之后,尽量早的提交,这样也保存了历史版本,必要时候可以回滚;在开始一天的工作之前,最后update一下项目。 ②保持原子提交(不要不经意间修改并提交了别人的文件) 仅提交你修改的部分,最好不要一下子将整个项目提交; 当完成一个功能或文件后,最好提交。我就遇到完成某个功能后,没有提交,后来又做了更改,结果代码出现bug,无法恢复到正常时的代码。 ③不要提交自动生成的文件 VisualStudio等开发工具在生成过程中会产生很多自动文件,如.suo等配置文件,Debug,Release,Obj等编译文件,以及其他的一些自动生成,同编译代码无关的文件,这些文件在提交的时候不应该签入,如果不小心签入了,需要从仓库中删除。 ④不要提交不能通过编译的代码 代码在提交之前,首先要确认自己能够在本地编译。进行SVN提交更新时最好是代码在提交前已经通过自己的测试。 SVN中常用命令详解 1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) 3、删除文件 svn delete path -m “delete test fle“ 例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete testfile” 4、查看日志 svn log path 5、比较差异 svn diff path(将修改的文件与基础版本比较) 6、将两个版本之间的差异合并到当前文件 svn merge -r m:n path SVN使用方法 更新(update),经常地update没有坏处,特别是多人项目中。如果每次提交(commit)前不进行更新(update)的到最新的版本的话,svn会提示当前的拷贝过期,需要更新。 提交(commit),一定要写上这次提交的内容的摘要,便于以后查阅。 将文件checkout到本地目录 svn checkout path(path是服务器上的目录) svn update命令自动用服务器上的版本替换本地版本控制的文件 6、Xcode中使用SVN问题以及提交解决冲突问题 Xcode的SVN功能,和Eclipse中的subclipse或者windows下的tortoiseSVN比较起来功能还差很多。 我是索性不用的,直接用命令行。我看有的朋友是用subclipse,其实也挺好,不过,为了使用SVN功能要单独开一个耗费资源的Eclipse。 但是,不论使用什么SVN工具,都会遇到Xcode固有的问题,即project.pbxproj文件的提交冲突问题。 project.pbxproj文件里面包含了构建过程所需的所有文件,如果你在项目目录下增加了新文件,比如没有通过Xcode,该文件就不在project.pbxproj文件中,就不会生成到app中。同理,如果你从SVN中更新到其他项目成员增加的文件,而没有更新project.pbxproj文件(或者该成员根本就没有提交这个文件),则也会出现相同的现象。 如果项目成员提交了新的project.pbxproj文件,你这边没有在项目中增加新的文件,直接svn update就可以了。 7、Xcode中更新代码后项目文件打不开 若选择更新整个项目经常会出现冲突问题,尤其是project.pbxproj文件。此文件包含了构建过程所需的所有文件,如果在项目目录下增加了新文件,但没有通过Xcode, 该文件就不在project.pbxproj文件中,就不会生成到app中。同理,如果从SVN中更新到其他项目成员增加的文件, 而没有更新project.pbxproj文件(或者该成员根本就没有提交这个文件),则也会出现相同的现象。这一文件冲突将直接导致项目文件打不开。 解决更新代码后打不开项目文件方法: 当项目文件如tobacco.xcodeproj打不开时可以右键选择'显示包内容',会看到有三个文件,project.pbxproj/user.modelv3/user.pbxuser。 其中project.pbxproj有三个版本,和解决普通svn文件冲突一样解决冲突即可。 8、SVN 更新 提交 合并 区别 当本地文件没有改动,服务器文件改动的时候,更新会从服务器取文件覆盖当前文件 当本地文件有改动,服务器文件没改动的话,不会更新此文件 当本地文件有改动,服务器文件有改动的话,如果改动的部分不冲突,就会合并文件到本地,如果有冲突的话,会提示文件冲突,需要自己手动修改以后上传到服务器。 最后一个讲解合并: 服务器和本地的同一个文件(所谓同一个文件应该就是SVN相对路径相同,文件名相同的文件,这个由SVN留在本地的信息决定)已经修改,且修改的部分不重合,不重叠 当满足上面的条件的时候再更新,SVN就会自动合并 SVN的奥妙之处就在于别人提交了修改后的文件,你再提交你的话,他是不允许你提交滴。。。 >>>> <<< 里面标记的是冲突的区域,把冲突区域删除掉为什么还不能提交 解决办法1: 删掉的话还是没有解决冲突,文件后面还会有几个文件名相同,但是后缀不同的文件 如果你不知道用SVN解决冲突的话,最简单的办法是这样的 把这个文件改名字,然后在文件所在目录更新,这样就会把服务器文件下下来,然后把自己修改的部分添加到更新的文件里面,这样就可以提交了 解决办法2: 在文件上面点击右键,到SVN的菜单,应该有编辑冲突的按钮,选择就会出现一个窗口,一边是服务器版本,一边是自己修改的版本 。 9、xcode自带svn的使用 1、代码中 某文件后面有 “M” 标记,表示该文件已被修改,需要 commit. (右键该文件 -> source control -> commit selected file...) 2、代码中 某文件后面有 “A” 标记,表示该文件是新添加的,已受SVN管理,需要 commit. (右键该文件 -> source control -> commit selected file...) 3、代码中 某文件后面有 “?” 标记,表示该文件是新添加的,并且脱离了SVN的管理,首先需要add,然后 commit. (右键该文件 -> source control -> Add,这样该文件的标记就变为 “A”,然后在 commit).
㈥ 谁能帮我详解Svn如何打版本号怎么还原以前的版本
每次成功提交文档都会由自然数累加版本号。点击了Commit命令,SVN就会生成一个新的版本号,再添加,再Commit后,版本号就会增加
1
,SVN的版本号就是这样累加出来得。
要是还原以前的版本号,你得先知道以前版本号是多少?
然后使用SVN
Switch命令,把你原来的版本号输入,点击确认就以回到原版本了
㈦ SVN常用命令及例句
1、Linux命令行下将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
简写:svn co
2、Linux命令行下往版本库中添加新的文件
svn add file
例如:svn add test.php(添加test.php)
svn add *.php(添加当前目录下所有的php文件)
3、Linux命令行下将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:svn commit -m “add test file for my test“ test.php
简写:svn ci
4、Linux命令行下的加锁/解锁
svn lock -m “LockMessage“ [--force] PATH
例如:svn lock -m “lock test file“ test.php
svn unlock PATH
5、Linux命令行下更新到某个版本
svn update -r m path
例如:
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)
svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
简写:svn up
6、Linux命令行下查看文件或者目录状态
1)svn status path(目录下的文件和子目录的状态,正常状态不显示)
【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】
2)svn status -v path(显示文件和子目录状态)
第一列保持相同,第二列显示工作版本号,第三和第四列显示最后一次修改的版本号和修改人。
注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,原因是svn在本地的.svn中保留了本地版本的原始拷贝。
简写:svn st
7、Linux命令行下删除文件
svn delete path -m “delete test fle“
例如:svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”
或者直接svn delete test.php 然后再svn ci -m ‘delete test file‘,推荐使用这种
简写:svn (del, remove, rm)
8、Linux命令行下查看日志
svn log path
例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化
9、Linux命令行下查看文件详细信息
svn info path
例如:svn info test.php
10、Linux命令行下比较差异
svn diff path(将修改的文件与基础版本比较)
例如:svn diff test.php
svn diff -r m:n path(对版本m和版本n比较差异)
例如:svn diff -r 200:201 test.php
简写:svn di
11、Linux命令行下将两个版本之间的差异合并到当前文件
svn merge -r m:n path
例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
12、Linux命令行下SVN 帮助
svn help
svn help ci
以上是常用命令,下面写几个不经常用的
13、Linux命令行下版本库下的文件和目录列表
svn list path
显示path目录下的所有属于版本库的文件和目录
简写:svn ls
14、Linux命令行下创建纳入版本控制下的新目录
svn mkdir: 创建纳入版本控制下的新目录。
用法: 1、mkdir PATH…
2、mkdir URL…
创建版本控制的目录。
1、每一个以工作副本 PATH 指定的目录,都会创建在本地端,并且加入新增调度,以待下一次的提交。
2、每个以URL指定的目录,都会透过立即提交于仓库中创建.在这两个情况下,所有的中间目录都必须事先存在。
15、Linux命令行下恢复本地修改
svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:
用法: revert PATH…
注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录
16、Linux命令行下代码库URL变更
svn switch (sw): 更新工作副本至不同的URL。
用法: 1、switch URL [PATH]
2、switch –relocate FROM TO [PATH...]
1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的方法。
2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动(比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用这个命令更新工作副本与仓库的对应关系。
17、Linux命令行下解决冲突
svn resolved: 移除工作副本的目录或文件的“冲突”状态。
用法: resolved PATH…
注意: 本子命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。
18、Linux命令行下输出指定文件或URL的内容。
svn cat 目标[@版本]…如果指定了版本,将从指定的版本开始查找。
svn cat -r PREV filename > filename (PREV 是上一版本,也可以写具体版本号,这样输出结果是可以提交的)
以上是Linux命令行下常用svn命令的使用方法。
㈧ mac系统怎么前往svn服
1、Xcode4苹自带SVN软件------>Organizer------>Repositories
2、SVN checkout本删除本file服务器影响?
影响服务器执行svn updatezai再自载;删除再执行svn commit服务器应删除
3、连接服务器
点击file-》repositories-》点击坐边+-》名字及svn服务器址type选subversionnext等等
4、Xcode4,SVN用命令
Commit 提交
checkout 服务器载本(我使用电脑)
update 更新文件
File------->SourceController------->update
图片第3按钮,视图比按钮.
5、SVN用详解注意事项
①提交自代码
SVN更新原则要及更新及提交完功能能够通编译并且并且自测试尽量早提交保存历史版本必要候滚;始工作前update项目
②保持原提交(要经意间修改并提交别文件)
仅提交修改部要整项目提交;
完功能或文件提交我遇完某功能没提交做更改结代码现bug恢复代码
③要提交自文件
VisualStudio等发工具程产自文件.suo等配置文件Debug,Release,Obj等编译文件及其些自同编译代码关文件些文件提交候应该签入签入需要仓库删除
④要提交能通编译代码
代码提交前首先要确认自能够本编译进行SVN提交更新代码提交前已经通自测试
SVN用命令详解
1、文件checkout本目录
svn checkout path(path服务器目录)
例:svn checkout svn://192.168.1.1/pro/domain
2、往版本库添加新文件
svn add file
例:svn add test.php(添加test.php)
3、删除文件
svn delete path -m delete test fle