如何将主干/分支概念从Subversion转换为Git?

时间:2010-05-14 19:42:32

标签: git branch github version-control

所以我不是一个源代码控制专家,过去我曾经使用过Subversion作为项目。我必须将Git用于特定项目(客户端提供的Git repo)。

我的工作流程是这样的,我将处理来自两台不同计算机的文件,并且我经常需要检查当我从一个地方移动到另一个地方时不稳定的更改,以便我可以继续我的工作。然后发生的是,当客户去获取最新版本时,他们也会下载不稳定的代码。

在SVN中,您可以通过创建中继并使用工作分支来解决此问题,或者使用中继作为工作版本并创建稳定的分支。

Git中的等价概念是什么,有没有一种简单的方法可以通过GitHub来实现?

2 个答案:

答案 0 :(得分:17)

有很多不同的方法可以做到这一点。如果您必须从计算机移动到计算机,您将切换到不同的存储库,这意味着您将更改推送到远程仓库。那没关系,但也意味着你

一个非常简单的例子是仅在私有分支上执行不稳定的工作,并将其命名为明显的东西,例如: unstable-development。以下是如何从头开始。首先,让我们从您客户的网站上创建一个新的回购,我称之为“秘密酱”。

$ git clone git://example.com/repositories/secret-sauce.git

您仍然在master分支上,默认情况下。让我们创建一个新的分支,这样你就可以在那里提交东西而不是master

$ git branch unstable
$ git checkout unstable
Switched to branch 'unstable'

好。现在让我们添加一些不稳定的代码:

$ touch kablammo.txt
$ git add *
$ git commit -m "Added unstable code."
[master (root-commit) 9428aef] Initial checkin.
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 kablammo.txt

目前,unstable仅存在于您的身边。请注意,当我们克隆时,我们得到了一个名为origin的远程存储库,它具有相应的master分支。当您的本地存储库知道远程存储库的分支时,我们将其称为“跟踪分支”。您可以使用git branch -r

查看所有远程跟踪分支
$ git branch -r
  origin/HEAD -> origin/master
  origin/master

好。让我们推回我们的变化吧!

$ git push origin unstable

就是这样 - 我们的更改现在位于远程仓库的unstable分支上。如果我们想再次查看master分支机构上的用户,我们可以使用git checkout master再次切换回来。

答案 1 :(得分:9)

我发现这是一个宝贵的资源:A Successful Git Branching Model

与SVN不同,git是分散的。您不应该将不稳定的代码推送到客户端的存储库中。您只需从第1台将不稳定代码拉到第2台计算机即可。

话虽如此,git处理分支很好,应该是你最终使用的任何方法的组成部分。