Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVN:重做更改_Svn - Fatal编程技术网

SVN:重做更改

SVN:重做更改,svn,Svn,这里是SVN初学者: 假设我提交了一个文件:修订版20。它有一些问题,所以我回滚了svn merge-r 20:19/somepath,然后提交了旧的更改。随着时间的推移,其他队友也做出了贡献,现在我们进入了第40次修订版。当我的队友一直在工作时,我一直在调整我的旧代码,现在我准备重新添加它。唯一的问题是,HEAD不再有我的更改,因此svn update会删除我的代码或导致冲突。如果我尝试反向合并,它会删除我的队友一直在处理的所有代码。如何将我的代码与头部合并,使队友添加的代码保持不变,而我添加

这里是SVN初学者:


假设我提交了一个文件:修订版20。它有一些问题,所以我回滚了svn merge-r 20:19/somepath,然后提交了旧的更改。随着时间的推移,其他队友也做出了贡献,现在我们进入了第40次修订版。当我的队友一直在工作时,我一直在调整我的旧代码,现在我准备重新添加它。唯一的问题是,HEAD不再有我的更改,因此svn update会删除我的代码或导致冲突。如果我尝试反向合并,它会删除我的队友一直在处理的所有代码。如何将我的代码与头部合并,使队友添加的代码保持不变,而我添加的代码保持不变?

我试图理解这里的问题。假设您的项目中只有一个名为
foo.txt
的文件

  • 在修订版20中,您在
    foo.txt
    中进行了更改
  • 在第30版中,您意识到您的更改是一个完全的错误,您需要将其删除
很简单:

$ svn -c -20 $REPO   # Same as your -r20:19
$ svn commit -m"Removing Revision 20 from Revision 31 (the next one)"
现在,这里是事情变得多云的部分

假设您签出了修订版#31(您在其中备份了更改的修订版)。你坐在这里,把你的改变重新添加进去,现在它们开始工作了。然而,其他人都转向了第40版。你是做什么的

$ svn update   # Updates from Revision 30 to Revision 40, but keeps your changes
$ svn commit   # Now creates Revision 41 with your changes and your friends' changes.
那就可以了