鉴于这种情况,我在一个文件中进行了两次独立更改:例如.添加了一个新方法并更改了另一种方法.
我经常不希望将两个更改都作为一个提交提交,而是作为两个独立提交.
在一个Git仓库我会使用交互模式的混帐加(1)到拆分大块分成较小的:
git add --patch
使用Subversion最简单的方法是什么?(甚至可能使用Eclipse插件)
更新:
在关于Git的事情中,Ryan称之为:"缠结的工作副本问题."
Tortoise SVN 1.8 现在支持它的"提交后恢复"功能.这允许您对文件进行编辑,并在提交后撤消所有编辑
根据文件:
仅提交与一个特定问题相关的文件部分:
在提交对话框中,右键单击文件,选择"提交后恢复"
在TortoiseMerge中编辑文件:撤消您不想提交的更改
保存文件
提交文件
我使用TortoiseSVN做到了这一点.
内置的合并实用程序允许您显示存储库版本和工作副本之间的差异.
使用diff实用程序的create backup功能
转到提交您的文件,就像您要提交所有更改一样.
在提交窗口中,双击该文件以显示差异.
在差异设置中,单击备份原始文件的选项.
右键单击不需要的更改,然后使用select use other text block.
将diff差别保存一次.每次保存时都会覆盖备份.这就是为什么你只想保存一次.
承诺改变.
使用创建的.bak文件覆盖原始文件(将包含所有原始更改).
提交你的文件.
您现在应该使用两个单独的提交来提交所有更改.
使用git-svn,您可以创建远程SVN存储库的本地GIT存储库,使用完整的GIT功能集(包括部分提交)使用它,然后将其全部推送回SVN存储库.
git-svn(1)
尝试使用svn diff > out.patch
然后将out.patch
文件复制到out.patch.add
和out.patch.modify
只有当您有一个工作的补丁文件时,才能使用恢复原始文件svn revert out.c
.
手工编辑补丁文件,以便它们只包含了帅哥的添加或修改.使用patch
命令将它们应用于原始文件,测试添加是否有效,然后svn commit
添加.
清洗冲洗重复out.patch.modify
贴片.
如果更改在文件中与您提出的初始问题分开 - 添加了一个新方法,更改了现有方法 - 这将起作用
这是一个非常繁琐的解决方案 - 虽然我不相信你应该有任何理由将你的提交分开.
您还可以检出同一来源的多个工作副本以应用您的工作:
svn co http://location/repository methodAdd
svn co http://location/repository methodModify
一定要svn up
测试,以确保一切顺利.
从v1.8开始,这可以使用TortoiseSvn(Windows).
4.4.1.提交对话框
如果您的工作副本是最新的且没有冲突,则您已准备好提交更改.选择要提交的任何文件和/或文件夹,然后选择TortoiseSVN→Commit ....
<剪断>
4.4.3.仅提交部分文件
有时您只想提交对文件所做更改的部分内容.这种情况通常发生在您正在处理某些事情但随后需要提交紧急修复时,并且该修复恰好位于您正在处理的同一文件中.
右键单击该文件并使用上下文菜单→提交后恢复.这将按原样创建文件的副本.然后,您可以编辑该文件,例如在TortoiseMerge中,并撤消您不想提交的所有更改.保存这些更改后,您可以提交该文件.
提交完成后,将自动恢复文件的副本,并且您拥有的文件包含未提交的所有修改.
在Linux上,我会试试http://webstaff.itn.liu.se/~karlu20/div/blog/2013-05-31_SVNPartialCommit.php.但是,自己没有尝试过.
我曾经这样做过:
在我的编辑器中(我使用vim),编辑文件以便只显示其中一个更改
保存文件(但不要退出编辑器)
将更改的文件提交给svn
在编辑器中点击"撤消"足够的时间再次出现第二组更改
再次保存文件
提交第二组更改.
这是一种简单的方法,假设一组更改很容易撤消.对于更复杂的情况,我会放弃并提交两个更改而不用担心它.
现在我使用git,这是我希望我再也不用做了!