我正在开发一个使用SVN作为存储库的项目,我将它与Netbeans SVN插件结合使用。我发现Netbeans SVN diff缺少彼此之下显示的几个差异,因此希望使用git-svn
来使用git gui
。
问题是现在保持两个存储库同步。我目前的工作流程是:
更新(没有本地更改):
svn up
git stash -u # include new files too
git svn rebase
git stash drop
Comitting:
git commit
git commit ...
git svn dcommit
这些基本案例确实有效,但如果我有本地未经暂停/未经注册的更改,它就无法正常工作。
保持本地git-svn和.svn同步的更好方法是什么?
答案 0 :(得分:0)
我找到了一个非常好的解决方法。我们的想法是使用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
进行的任何提交(删除提交消息,而不是更改)。作为解决方案,请通过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