【发布时间】:2013-06-30 01:09:22
【问题描述】:
git svn fetch 是如何工作的?提取的那个分支在哪里,以便我可以与我的主分支或其他分支合并或变基?因为git remote 没有在我的git svn 存储库中给我任何信息,所以从哪里获取数据?
【问题讨论】:
标签: git git-svn git-merge git-rebase git-fetch
git svn fetch 是如何工作的?提取的那个分支在哪里,以便我可以与我的主分支或其他分支合并或变基?因为git remote 没有在我的git svn 存储库中给我任何信息,所以从哪里获取数据?
【问题讨论】:
标签: git git-svn git-merge git-rebase git-fetch
不幸的是,git-svn 工具实际上并没有将远程 SVN 分支变成真正的 Git 远程。它们看起来像遥控器,但实际上并不能起到遥控器的作用。 git-svn 在内部跟踪分支,我也发现它有点令人沮丧。
但是,您可以从 SVN 分支分支或从它们合并。运行git branch -r 以查看所有远程跟踪分支,包括那些由 git-svn 创建的伪分支:
$ git branch -r
svn/SVNBranch1
svn/SVNBranch2
$ git checkout -b branch1 svn/SVNBranch1
【讨论】:
You should be able to branch from the SVN branches or merge from them, however...怎么样?
git svn fetch 是这样工作的:
当使用git-svn 时,您没有使用 git 时的 svn 服务器的 remotes,您只有一个链接到本地 .gitconfig 文件中的远程 svn 服务器。
如果您想将当前分支更新到最新版本,您可以使用git svn rebase。但是,如果您的 svn 项目很大,您可能会处于不知道最后一次修订是否成功构建的情况。如果您想更新到您确定是成功构建的特定修订版,例如您使用 Jenkins,它会为您提供最后一次成功构建,您必须首先 fetch 到您想要的修订版然后 rebase 与提取的提交。
为此,您可以git svn fetch -r <revision>。这将在本地获取提交,直到想要的修订。要重新定位获取的数据,您必须使用git svn rebase -l 或git svn rebase --local。您不必在线进行本地变基。
【讨论】:
默认情况下 git-svn 跟踪分支是 remotes/git-svn,您可以使用它在 git svn fetch 获取的更改之上合并或重新调整您的工作。
【讨论】: