当我做svn status .,我得到这个:

!     C auto-complete-config.elc
      >   local edit, incoming delete upon update
!  +  C auto-complete.elc
      >   local edit, incoming delete upon update
!  +  C popup.elc
      >   local edit, incoming delete upon update
!  +  C fuzzy.elc
      >   local edit, incoming delete upon update

基本上,这些文件不应该在存储库中。一个开发人员已经删除了它们。然后,我想我做了一个svn…事后误操作(应该做SVN更新的。相反)。

现在,当我执行svn status .时,我得到这些树冲突消息。

我在这里找到了文档,但不确定如何根据文档“合并”它。

如何摆脱它们?

我认为我的工作副本与存储库是同步的。不知道为什么这些信息显示。据我所知,这些文件应该被删除。我尝试了svn update。和SVN还原。但我仍然得到这条消息时,我做svn状态..


当前回答

试着用武力解决冲突

svn resolve --accept=working PATH

其他回答

短版:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update
$ touch foo bar
$ svn revert foo bar
$ rm foo bar

如果冲突是关于目录而不是文件,那么将touch替换为mkdir,将rm替换为rm -r。


注:同样的程序也适用于以下情况:

$ svn st
!     C foo
      >   local delete, incoming delete upon update
!     C bar
      >   local delete, incoming delete upon update

长版:

当你编辑一个文件,而其他人先删除该文件并提交时,就会发生这种情况。作为一个好的svn公民,你在提交前会做一个更新。现在你有冲突了。意识到删除文件是正确的事情,你从你的工作副本删除文件。svn现在抱怨本地文件丢失,并且有一个冲突的更新,最终希望看到文件被删除。干得好,svn。

如果svn解决不了,无论出于什么原因,都可以采取以下措施:

初始情况:本地文件丢失,更新冲突。

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

重新创建冲突文件:

$ touch foo bar

如果冲突是关于目录的,那么将touch替换为mkdir。

新情况:本地文件被添加到存储库(是的,svn,不管你说什么),更新仍然冲突。

$ svn st
A  +  C foo
      >   local edit, incoming delete upon update
A  +  C bar
      >   local edit, incoming delete upon update

将文件恢复到svn喜欢的状态(即删除):

$ svn revert foo bar

新情况:svn不知道本地文件,更新不再冲突。

$ svn st
?       foo
?       bar

现在我们可以删除文件:

$ rm foo bar

如果是目录冲突,则将rm替换为rm -r。

SVN不再抱怨:

$ svn st

完成了。

因此,您可以恢复您删除的文件,但请记住,如果您正在使用任何类型的项目,并设置项目文件(如iOS),恢复文件将添加到您的系统文件夹结构,而不是您的项目文件结构。如果您是这种情况,可能需要额外的步骤

我也有同样的问题,我发现

$ svn revert foo bar

解决了问题。

SVN resolve对我不起作用:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working
svn: Try 'svn help' for more info
svn: Not enough arguments provided

$ svn resolve --accept working .

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working foo
Resolved conflicted state of 'foo'

$ svn st
!  +    foo
!  +  C bar
      >   local edit, incoming delete upon update

如果在冲突目录中没有做任何更改,还可以使用rm -rf conflicts_in_here/,然后使用svn up。这至少对我有用。

试着用武力解决冲突

svn resolve --accept=working PATH