22

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

我们如何使用它: 我们在每次更改之前进行分支,合并回 master,在本地提交并推送到我们的 github 存储库。然后,我们 ssh 进入我们的测试环境并拉取 github repo 的 master 分支。我们还没有完全掌握rebasefetch或者tagging只是还没有掌握。

我想如何使用它: 我希望能够通过 ssh 进入不同的服务器并将特定的标记版本(如“阶段 1”)拉入服务器。这可能吗,还是我需要两个不同的 github 存储库?

您是否应该将git pull特定分支放入 Web 服务器或创建一个新的别名git push

您能否在一个 git 存储库中控制发布候选版本或环境(测试、开发、生产)?还是你需要多个?

如果拉是解决方案,你能拉一个具体的tag吗?

4

3 回答 3

16

Read the Pro Git book. You can read git man pages for a year and still not get it: trying to learn git by reading man pages is like trying to learn a new language by reading a dictionary, it can be done. The book will teach you a handful of workflows you can have with git, and what git commands to use and in which context to use them.

于 2009-11-24T15:36:51.877 回答
8

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

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

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

于 2009-10-22T04:14:11.223 回答
4

在 GitHub 上,我为我的公司使用一个帐户,这是“有福”的代码所在的地方;然后我维护一个个人分支,在那里我处理还不太稳定的事情。在我的本地机器上,我在一个 repo 中处理这两个,因此 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

由于我拥有公司 repo 的提交权限,因此我可以将一个分支的提交合并(或挑选)到另一个分支,并将其推送到适当的位置。现在,当然不需要单独的 repos,但由于这是一个开源项目,我喜欢让“官方”repo 不受我的切线创建的随机分支的影响。一旦达到版本控制点,就会有一个 0.x 分支,每个版本都有标签(0.1、0.1.1、0.2 等),这特别有利,因为 github 会自动创建文件的 tarball在每个标签上,非常适合将特定版本下拉到不需要完整历史记录的机器上。

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

于 2009-11-03T20:17:18.140 回答