繁体   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