簡體   English   中英

重命名文件夾后GIT SVN dcommit

[英]GIT SVN dcommit after folder rename

我無法找到類似的答案。

情況:

在本地使用GIT(git版本1.7.3.1.msysgit.0)
遠程存儲庫為SVN(不確定版本)


問題:

克隆SVN存儲庫,添加文件夾,將其提交到git和SVN,重命名文件夾(不告訴git),提交給git,無法再提交給SVN。


發行步驟(SVN存儲庫的根目錄main.as中有一個文件)

  1. SVN存儲庫中的克隆分支(現在本地有一個文件)
  2. 本地提交到git(包括git add .
  3. 使用文件創建oldFolder
  4. 本地提交到git(包括git add .
  5. 提交到SVN
  6. 重命名 oldFolder-> newFolder (使用IDE或手動重命名-不是git-mv
  7. 本地提交到git(包括git-add .
  8. dcommit到SVN(不需要SVN變基,因為我是唯一提交SVN更改的人)

問題 :git-svn dcommit響應:

oldFolder/file.txt: needs update

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

我試過的

  • 隱藏,提交,dcommit,隱藏應用(同一件事:需要更新)
  • 隱藏,重新設置,隱藏應用,提交,dcommit (同一件事:需要更新)
  • 隱藏,重新設置,隱藏應用,提交,隱藏,dcommit (同一件事:需要更新)

半成品的那個叫:

svn rm -r oldFolder

但這以SVN中的oldFoldernewFolder結尾...而我希望重命名或刪除oldFolder (在這種情況下,我不介意丟失歷史記錄)。

我需要SVN存儲庫以反映我本地的git master / branch ...


為什么不使用git命令重命名文件?
我使用大型文件結構,並且即時消息用於重構舊代碼的IDE重命名了導致上述情況的多個文件夾和文件。 我無法跟蹤並在刪除的每個文件夾上調用git rm。

在步驟7中,您分階段添加了新文件(newFolder / file.txt),但沒有刪除舊文件。 您需要執行以下操作,而不是上面的步驟6和7:

  1. 重命名oldFolder-> newFolder(使用IDE或手動重命名-不是git-mv)
  2. git添加newFolder
  3. git rm -r oldFolder
  4. 本地提交

此時,git將跟蹤重命名(如果有),並為SVN生成正確的提交。

如果您的樹仍在第7步,則可以執行

git reset --soft HEAD~

返回上一個提交並進行刪除。

(僅出於完整性考慮而添加另一個答案)

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

因此,即使在文件夾重命名的情況下,以下命令序列通常也“有效”:

git add --all
git commit -m "some msg"
git svn dcommit

我們真的不需要git rm -r OLD_FOLDER (當然,除非我們要微調Git索引定義)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM