1

我正在开发一个使用 SVN 作为存储库的项目,我将它与 Netbeans SVN 插件结合使用。我发现 Netbeans SVN diff 缺乏显示彼此下方的几个 diff,因此希望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 同步的更好方法是什么?

4

1 回答 1

0

我找到了一个很好的解决方法。这个想法是使用颠覆来保持文件更新,并让 git 只更新其历史记录而不触及工作树中的任何文件。git svn创建了一个特殊的git-svn分支,其中包含一次获取的最新颠覆代码。

更新文件的命令,后跟 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
于 2012-12-04T12:18:05.153 回答