[英]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.