2017-03-03 175 views
0

我可以通過git init + git svn fetch成功取回svn回購。但是,當我嘗試更新或通過git svn rebase將svn回購更新拉到我的本地git-svn回購時,我總是收到當前分支主幹是最新的git-svn:git svn rebase不更新回購

編輯 如果我已經將修改推送到git repo,它有什麼區別嗎?

以下是我的.git/config文件。

[core] 
    repositoryformatversion = 0 
    filemode = false 
    bare = false 
    logallrefupdates = true 
    symlinks = false 
    ignorecase = true 
    hideDotFiles = dotGitOnly 
[svn-remote "svn"] 
    url = https://server/svn/Project 
    fetch = SubProject/trunk:refs/remotes/origin/trunk 
    tags = SubProject/tags/{1.03.000,1.02.000}:refs/remotes/origin/tags/* 
+0

您確定SVN存儲庫中有新的提交,您尚未在您的Git克隆中提交嗎? 'git svn rebase'應該完全符合你的期望。 – Vampire

+0

@吸血鬼肯定有更新。我嘗試切換到主幹分支,git svn fetch --all + git svn rebase。 –

回答

0

你必須獲取從SVN倉庫新提交第一然後重訂同與當地Git庫,乾淨,把它推到遠程,如下所示:

D:\svn-to-git\dev-git> git svn fetch 
D:\svn-to-git\dev-git> java -Dfile.encoding=utf-8 -jar D:\svn-to-git\svn-migration-scripts.jar sync-rebase 
D:\svn-to-git\dev-git> java -Dfile.encoding=utf-8 -jar D:\svn-to-git\svn-migration-scripts.jar clean-git --force 
D:\svn-to-git\dev-git> git add . 
D:\svn-to-git\dev-git> git push 

更多你可以在這裏閱讀 - Migrating From SVN to Git

+0

除此之外,'git-svn'並不是真正的從SVN遷移到Git的正確工具,但只是將Git用作前端到SVN服務器的前端,爲什麼不應該'git svn rebase'足夠? 'git svn fetch'會更新所有被克隆的分支,但是你可以在'git svn rebase'文檔的第一句中讀到:「這會從當前HEAD的SVN父節點獲取修訂,並重新設置當前(未提交SVN)對此不利。「所以應該完全按照OP的要求做。 – Vampire

+0

我以爲git svn rebase是svn update的等價物嗎?我確實嘗試了git svn fetch,看看它是否會從SVN回購中獲得改變,但看起來也是如此。 –

+0

@吸收「git svn rebase」和「git svn fetch' AFAIU之間的區別,前者」從當前HEAD的SVN父節點獲取修訂版本「,而後者從svn遠程節點獲取所有未跟蹤的修訂版本。除了'git-svn'對於順利遷移來說是一個非常好的工具,對於我來說,在許多不同的設置中工作了很多次,並且沒有安全地忽略它的邊緣情況 - 如果是的話,那麼看看更復雜備擇方案。 –