git-svn的git-svn标签在哪里?

时间:2013-10-25 08:05:14

标签: git git-svn rebase

我正在使用git-svn来练习git。我的意思是我绝不是一个git专家。一开始我发现git令人生畏,但我对git的设计和力量着迷。我有一个问题我无法回答在互联网上搜索,也许是因为很难搜索。

使用git在功能分支上进行了几天的开发(在使用git-svn克隆之后),我想在我 git svn dcommit 之前重新提交提交。我不想让svn集成分支泛滥成几十个小的,毫无意义的提交。为此,我知道我可以使用 git rebase -i

此命令需要指定提交。我看过我可以使用名为 git-svn 的(标签?)。实际上,存在这样的提交/标记,我可以 git log git-svn .. ,或者 git rebase -i git-svn

到目前为止,这很好,这很有效。现在,在介绍之后,我的问题是:

这个 git-svn 参考是什么?标签?提交?命令 git tag --list 不显示任何内容,而 git-svn 作为标记在我以前工作的其他git克隆上不存在。

另一个问题:在 git svn dcommit 之后,该引用会被更改吗?可以手动更改吗?

感谢。

2 个答案:

答案 0 :(得分:2)

在这种情况下,git-svn不是标记。它是由git svn clone创建的(特殊类型)remote-tracking branch

<强>背景

使用git svn clone克隆SVN存储库时,默认情况下整个存储库将被克隆为一个远程跟踪git分支(要将SVN分支转换为git分支,必须使用选项{{1} },-T-b;请参阅联机帮助页的Handling of SVN branches部分)。在这种情况下,-s将创建该远程跟踪分支为“refs / remotes / git-svn”

现在git允许你缩写对分支的引用;因此,您可以编写git svn而不是撰写git log refs/heads/master。类似地,“refs / remotes / git-svn”可以缩写为“git-svn”。这在联机帮助页gitrevisions中进行了解释。

所以回答你的问题:

  

这个git-svn参考是什么?标签?提交?

这是一个远程跟踪分支。它由git log master显示。

  

另一个问题:在我git svn dcommit之后,那个引用会是   改变了吗?

是。分支“git-svn”跟踪您克隆的SVN仓库,因此每当您从SVN获取新版本时它都会被更改;这包括致电git branch -agit svn dcommit

  

可以手动更改吗?

是的,它可以像任何其他git分支一样。然而,总的来说这是毫无意义的;它只会混淆git svn fetch并搞乱你的存储库。有些情况下需要(例如重新获取服务器上更改的SVN修订版),但这是一个不同的问题......

答案 1 :(得分:0)

我对我的项目使用了大量的git-svn,但我找不到名为 git-svn 的引用。 您使用的是哪个git版本?

根据我自己的经验,git-svn创建了一个名为 trunk 的引用,它指向从svn服务器检索到的最后一个提交。当您执行 git svn dcommit git svn rebase 时,引用将更新为代表svn repo的HEAD修订版的提交。

为了执行您描述的dcommit,您可以:

git svn rebase (to update your current branch to the latest svn revision)
git rebase -i trunk (to rewrite local history before dcommit-ting)
git svn dcommit 

在最后一步之后, trunk 引用将更新为刚刚提交的svn版本。