使用git和github的工作流程最佳实践?

时间:2009-10-22 01:43:25

标签: git workflow version-control github

我一直在与我的小团队开发人员一起使用git和github来完成我们的项目。我不禁想到我们做得不对。我很想知道其他人如何在他们的项目中使用这个工作流程。

我们如何使用它 我们在每次更改之前进行分支,合并回主服务器,在本地提交并推送到我们的github存储库。然后我们进入我们的测试环境并拉出github repo的master分支。我们还没有完全掌握rebasefetchtagging

我想如何使用它 我希望能够ssh到不同的服务器并将特定的标记版本(如“阶段1”)拉入服务器。这可能,或者我需要两个不同的github回购?

您是否应该git pull进入网络服务器的特定分支机构或为git push创建新的别名?

您可以在一个git存储库中控制候选版本或环境(测试,开发,生产)吗?或者你需要多个?

如果提取是解决方案,您可以提取特定的tag吗?

3 个答案:

答案 0 :(得分:16)

阅读Pro Git book。你可以阅读一年的git手册页但仍然没有得到它:尝试通过阅读手册来学习git就像试图通过阅读字典来学习一门新语言,它可以完成。本书将向您介绍一些使用git可以使用的工作流程,以及要使用的git命令以及使用它们的上下文。

答案 1 :(得分:8)

基本上,你可以很好地使用一个“中央”GitHub存储库。

  • 标签是不可变指针,它们可以随时使用(和推送),以便签出到任何测试或生产环境。这允许进行一些验证,但通常不用于开发。
  • 拉分支意味着您可以在该分支内进行一些改进(由于一些代码在生产环境中时会进行一些错误修正和调整)并将其推回给所有其他开发人员的存储库以供他们撤回并采取考虑到了。

因此,这取决于您在这些服务器上所做的事情:仅验证(已接受或拒绝状态),或进一步发展。
在每种情况下,具有适当命名约定的标记很好地跟踪历史记录中的特定提交,但每次需要隔离开发工作时都需要分支。

答案 2 :(得分:4)

在GitHub上,我为我的公司使用了一个帐户,这是“有福”的代码所在的地方;然后我保留了一个私人的分支,我在那里处理那些不太稳定的东西。在我的本地机器上,我在一个仓库中处理两个,因此master是受祝福的代码(并推送到公司帐户),而所有其他分支都是我的fork。这是我的.git / config的一部分:

[remote "origin"]
        fetch = +refs/heads/*:refs/remotes/origin/*
        url = git@github.com:xiongchiamiov/fourU.git
[branch "hacking"]
        remote = origin
        merge = refs/heads/hacking
[branch "editor"]
        remote = origin
        merge = refs/heads/editor
[branch "problem-utils"]
        remote = origin
        merge = refs/heads/problem-utils
[branch "tests"]
        remote = origin
        merge = refs/heads/tests

[remote "trunk"]
        fetch = +refs/heads/*:refs/remotes/trunk/*
        url = git@github.com:xyztextbooks/fourU.git
[branch "master"]
        remote = trunk
        merge = refs/heads/master

由于我已经为公司仓库提交了权限,因此我可以将提交从一个分支合并(或樱桃选择)到另一个分支,并将其推送到适当的位置。现在,单独的回购肯定不是必需的,但由于这是一个开源项目,我喜欢保持“官方”回购没有我的切线创建的随机分支。一旦它到达版本控制点,将有一个0.x分支,每个版本都有标签(0.1,0.1.1,0.2等),这是特别有利的,因为github自动创建文件的tarball在每个标签上,非常适合将特定版本下载到不需要完整历史记录的机器上。

你应该阅读github博客;他们有一些很好的帖子描述了他们的部署工作流程,这当然主要涉及git。

相关问题