簡體   English   中英

如何使本地svn-git存儲庫與.svn保持同步?

[英]How can I keep a local svn-git repo in sync with .svn?

我正在使用SVN作為存儲庫的項目,該項目與Netbeans SVN插件結合使用。 我發現Netbeans SVN差異缺少在彼此之間顯示幾個差異,因此想要使用git-svn來使用git gui

現在的問題是使兩個存儲庫保持同步。 我當前的工作流程是:

  • 更新(無本地更改):

     svn up git stash -u # include new files too git svn rebase git stash drop 
  • 承諾:

     git commit git commit ... git svn dcommit 

這些基本情況確實有效,但是如果我進行了本地未暫存/未提交的更改,則無法很好地工作。

有什么更好的方法來保持本地git-svn和.svn同步?

我找到了一種很好的解決方法。 這個想法是使用subversion來保持文件更新,而git只更新其歷史記錄而不會觸及工作樹中的任何文件。 git svn創建了一個特殊的git-svn分支,其中包含了一旦被獲取的最新的Subversion代碼。

用於更新文件的命令,然后更新git repo歷史記錄:

svn up
git svn fetch
git reset --mixed git-svn

最后一個git reset --mixed命令是必需的,以確保git知道您的文件來自上一個SVN版本。 請注意,此命令將重置您使用git commit所做的所有git commit (刪除提交消息,而不是更改)。 作為解決方案,請通過svn commit並獲取您的歷史記錄,如上所示。

git reset --mixed git-svn某種程度上使您無法承諾使用dcommit 運行git reset --mixed git-svn ,請按照以下順序使用git進行提交:

git stash
git svn rebase
git stash pop
git commit ...
git svn dcommit

暫無
暫無

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

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