我无法找到与我的问题相似的答案。
情况:
本地使用GIT(git版本1.7.3.1.msysgit.0)
远程存储库是SVN(不确定版本)
问题:
克隆SVN仓库,添加文件夹,将其提交给git和SVN,重命名文件夹(不告诉git),提交git,不能再提交给SVN。
问题步骤 (SVN repo在根文件夹中有一个文件main.as)
git add .
)git add .
)git-mv
)git-add .
)问题:git-svn dcommit响应:
oldFolder/file.txt: needs update
update-index --refresh: command returned error: 1
我尝试了什么:
半工作的人打电话:
svn rm -r oldFolder
但最终在SVN中出现了oldFolder
和newFolder
...而我想要oldFolder
重命名或删除(我不介意在这种情况下丢失历史记录) )。
我需要SVN repo来反映我当地的git master / branch ......
为什么我在没有git命令的情况下重命名文件?
我使用大型文件结构和我用来重构旧代码的IDE重命名导致上述场景的多个文件夹和文件。我无法跟踪并在每个删除的文件夹上调用git rm。
答案 0 :(得分:1)
在步骤7,您暂停添加新文件(newFolder / file.txt),但不删除旧文件。您需要执行以下操作,而不是上面的步骤6和7:
此时,git将跟踪重命名(如果有的话),并为SVN生成正确的提交。
如果你的树仍然在第7步,你可以
git reset --soft HEAD~
返回上一次提交并暂停删除。
答案 1 :(得分:0)
(仅为了完整性而添加另一个答案)
git add --all
添加所有修改,包括删除和重命名。
因此,即使在文件夹重命名的情况下,以下命令序列通常也“正常”:
git add --all
git commit -m "some msg"
git svn dcommit
我们并不需要git rm -r OLD_FOLDER
(当然,除非我们想要微调Git索引定义)。