我一直未能找到类似的答案来回答我的问题。
情况:
本地使用GIT (git版本1.7.3.1.msysgit.0)
远程存储库是SVN (不确定版本)
问题:
克隆SVN,添加一个文件夹,将其提交到git和SVN,重命名该文件夹(不告诉git),提交到git,不能再提交到SVN。
问题步骤(SVN在根文件夹中有一个main.as文件)
git add .)git add .)git-mv)git-add .)PROBLEM:git-svn响应:
oldFolder/file.txt: needs update
update-index --refresh: command returned error: 1我试过的是:
update)
半工半身的那个叫:
svn rm -r oldFolder但最终oldFolder和newFolder在SVN.然而,我希望oldFolder被重命名或删除(在本例中,我不介意丢失历史)。
我需要SVN回购来反映我当地的git主人/分支..。
为什么不使用git命令重命名文件?
我使用大型文件结构和IDE,这些IDE用于重构旧代码,重命名多个文件夹和文件,导致上述情况。我无法跟踪和调用git对每个文件夹删除。
发布于 2011-12-01 21:13:50
在步骤7中,先添加新文件(newFolder/file.txt),而不是删除旧文件。您需要执行以下操作,而不是上面的步骤6和步骤7:
oldFolder
此时,git将跟踪重命名(如果有的话),并为SVN生成正确的提交。
如果你的树还在第7步,你可以
git reset --soft HEAD~若要返回到前一次提交并执行删除,请执行以下操作。
发布于 2014-01-29 17:30:50
(为了完整起见,添加另一个答案)
git add --all添加所有修改,包括删除和重命名。
因此,以下命令序列通常“仅起作用”,即使在文件夹重命名的情况下也是如此:
git add --all
git commit -m "some msg"
git svn dcommit我们实际上不需要git rm -r OLD_FOLDER (当然,除非我们想微调Git索引定义)。
https://stackoverflow.com/questions/7743144
复制相似问题