git svn clone confusion

时间:2012-08-09 14:56:56

标签: git git-svn

我在 svn 中有一个项目,设置为:

project
 branches/
 tags/
 trunk/

我什么时候做

git svn clone -s -r ##:HEAD path/to/svn

我得到的是一系列文件和文件夹,我相信来自trunk,当我做

git branch

当我看到mastermasterclean位于clean下)

时,我看到的是branches/

最近怎么回事?

如果我这样做:

git svn clone -r ##:HEAD path/to/svn

然后我得到了我的布局:

project
 branches/
 tags/
 trunk/

git 无法识别branches下的分支。此外trunk也是branches ....

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我相信您的分支机构已创建,但您没有看到它们,因为它们是远程分支机构。试试git branch -va。例如,要使用这些远程分支,您可以创建一个本地分支:

$ git checkout -b working_from_branch -t clean remotes/branches/clean

答案 1 :(得分:2)

尝试以下命令:

git branch -r

...它应该显示此存储库知道的所有远程分支。假设你的分支/目录是扁平的(没有嵌套分支或分支层次结构),git svn clone -s应该自动识别它们。

这些没有出现在对git分支的默认响应中的原因是,直接在git中的远程分支上工作通常是不好的做法。当您将更改发送到远程存储库时,无论如何都将发送远程分支上的所有内容。通过签出本地跟踪分支,您可以选择删除提交(通过创建另一个本地跟踪分支,并复制您要发送的更改)。要创建跟踪分支,请使用:

git checkout -b master-mybranch -t mybranch

mybranch是您要跟踪的分支。我使用master- *作为我自己的约定,但你可以将跟踪分支命名为你喜欢的任何东西,只要它能帮助你记住它是什么。祝你好运!