首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件夹重命名后的GIT SVN dcommit

文件夹重命名后的GIT SVN dcommit
EN

Stack Overflow用户
提问于 2011-10-12 16:13:07
回答 2查看 1.5K关注 0票数 2

我一直未能找到类似的答案来回答我的问题。

情况:

本地使用GIT (git版本1.7.3.1.msysgit.0)

远程存储库是SVN (不确定版本)

问题:

克隆SVN,添加一个文件夹,将其提交到git和SVN,重命名该文件夹(不告诉git),提交到git,不能再提交到SVN。

问题步骤(SVN在根文件夹中有一个main.as文件)

  1. clone分支从SVN (现在有一个文件locally)
  2. commit到git本地)(包括git add .)
  3. create oldFolder ,在it
  4. commit到git本地有一个文件(包括git add .)
  5. dcommit到SVN
  6. rename oldFolder -> newFolder (用IDE重命名或手动重命名),而不是git-mv)
  7. commit到git )。本地(包括git-add .)
  8. dcommit到SVN (不需要SVN重基,因为我是唯一一个提交对SVN的更改)

PROBLEM:git-svn响应:

代码语言:javascript
复制
oldFolder/file.txt: needs update

update-index --refresh: command returned error: 1

我试过的是:

update)

  • stash,

  • 存储、提交、提交、存储应用(相同的东西:需要重基、存储应用、提交、提交、dcommit (相同的内容:需要更新)

  • 存储、重基、存储应用、提交、存储、dcommit (相同的东西:需要更新)

半工半身的那个叫:

代码语言:javascript
复制
svn rm -r oldFolder

但最终oldFoldernewFolder在SVN.然而,我希望oldFolder被重命名或删除(在本例中,我不介意丢失历史)。

我需要SVN回购来反映我当地的git主人/分支..。

为什么不使用git命令重命名文件?

我使用大型文件结构和IDE,这些IDE用于重构旧代码,重命名多个文件夹和文件,导致上述情况。我无法跟踪和调用git对每个文件夹删除。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-01 21:13:50

在步骤7中,先添加新文件(newFolder/file.txt),而不是删除旧文件。您需要执行以下操作,而不是上面的步骤6和步骤7:

oldFolder

  • commit
  1. 重命名oldFolder -> newFolder (用IDE重命名或手动重命名--而不是git-mv)
  2. git添加newFolder
  3. git rm -r rm-r oldFolder

此时,git将跟踪重命名(如果有的话),并为SVN生成正确的提交。

如果你的树还在第7步,你可以

代码语言:javascript
复制
git reset --soft HEAD~

若要返回到前一次提交并执行删除,请执行以下操作。

票数 2
EN

Stack Overflow用户

发布于 2014-01-29 17:30:50

(为了完整起见,添加另一个答案)

git add --all添加所有修改,包括删除和重命名。

因此,以下命令序列通常“仅起作用”,即使在文件夹重命名的情况下也是如此:

代码语言:javascript
复制
git add --all
git commit -m "some msg"
git svn dcommit

我们实际上不需要git rm -r OLD_FOLDER (当然,除非我们想微调Git索引定义)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7743144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档