Git:Git svn fetch是如何工作的?

Git:Git svn fetch是如何工作的?,git,git-svn,git-merge,git-rebase,git-fetch,Git,Git Svn,Git Merge,Git Rebase,Git Fetch,git svn fetch是如何工作的?获取的分支在哪里,以便我可以与我的主分支或其他分支合并或重新设置基础?由于git-remote没有在我的git-svn存储库中提供任何信息,所以数据在哪里提取?不幸的是,git-svn工具实际上没有将远程svn分支成真正的git-remote。它们看起来像遥控器,但实际上不起遥控器的作用。git svn在内部跟踪分支,我也发现这有点令人沮丧 但是,您可以从SVN分支进行分支或合并。运行git branch-r查看所有远程跟踪分支,包括git svn创建的伪

git svn fetch
是如何工作的?获取的分支在哪里,以便我可以与我的主分支或其他分支合并或重新设置基础?由于
git-remote
没有在我的
git-svn
存储库中提供任何信息,所以数据在哪里提取?

不幸的是,git-svn工具实际上没有将远程svn分支成真正的git-remote。它们看起来像遥控器,但实际上不起遥控器的作用。git svn在内部跟踪分支,我也发现这有点令人沮丧

但是,您可以从SVN分支进行分支或合并。运行
git branch-r
查看所有远程跟踪分支,包括git svn创建的伪分支:

$ git branch -r
svn/SVNBranch1
svn/SVNBranch2
$ git checkout -b branch1 svn/SVNBranch1

这就是
git svn fetch
的工作原理:

使用
git svn
时,您没有使用git时的svn服务器远程,您只需要在本地.gitconfig文件中有一个指向远程svn服务器的链接

如果要将当前分支更新为最新版本,可以使用
git svn rebase
。但是,如果您的svn项目很大,您可能会遇到这样的情况:您不知道上一个修订版是否成功构建。如果您想更新到一个您确信是成功构建的特定版本,例如,您使用Jenkins,它为您提供了最后一个成功构建,那么您必须首先获取您想要的版本,然后使用获取的提交重新设置基础


为此,您可以
git svn fetch-r
。这将在本地获取提交,直到需要的修订。要重新设置获取数据的基础,必须使用
git svn rebase-l
git svn rebase--local
。您不必在线进行本地重新基址设置。

默认情况下,git svn跟踪分支是
remotes/git svn
,您可以使用它在
git svn fetch
获取的更改上合并或重新基址您的工作。您应该能够从svn分支进行分支或从它们进行合并,然而…如何?@JacobKrieg如何?这是Colin回答的最后一行我不同意,似乎git svn通常会在git中重新创建svn repo中的分支和标记,因此最终在gut repo中会有许多分支(可能),所有分支都以某种形式跟踪svn分支