3

好的,我只想检查我的 GIT 设置的工作流程是否正确,并且在我开始正确使用它之前我完全理解它。我正在遵循这个工作流程,这个主题只是从初始化和创建功能分支开始,然后当我确信我将为发布和修补程序创建一个新主题时。希望这将有助于其他希望在类似工作流程中使用 GIT 的人。

有 3 个开发人员,我们称他们为 A、B 和 C,他们都将在他们的本地计算机上工作,我们有 4 个远程服务器 - 'Development'、'Staging'、'Production' 和 Unfuddle(作为集中式服务器)。开发人员 A 在其本地计算机上拥有文件目录。

所以,我认为工作流程如下。

首先,我需要在 Unfuddle 上创建存储库,然后在本地将我的文件推送到 Unfuddle 服务器。

  1. 在 Unfuddle 中创建一个名为“website”的存储库,并将其缩写为“web”

  2. 在“开发”、“暂存”和“生产”服务器上创建一个 SSH 密钥对,并将它们添加到 Unfuddle 帐户。

  3. 开发人员 A 在其文档根目录中初始化一个 Git 存储库:

    git init

  4. 将 Unfuddle 存储库与开发人员 A 的本地存储库相关联,并将其指定为上游服务器:

    git remote add unfuddle git@subdomain.unfuddle.com:username/web.git

    git config remote.unfuddle.push refs/heads/master:refs/heads/master

  5. 开发人员 A 将所有文件添加到索引

    git add *

  6. 开发者 A 提交所有文件

    git commit -am 'initial commit'

  7. 开发人员 A 将本地提交的内容推送到 Unfuddle Git 存储库。

    git push unfuddle master

我现在应该在我的 Unfuddle 存储库中看到我的所有文件。开发人员 B 和 C 现在可以克隆存储库以获取网站文件的副本。

`git clone git@subdomain.unfuddle.com:username/web.git`

功能分支:

每个开发人员现在都可以使用以下工作流程开始创建功能分支:

  1. git checkout -b develop
  2. git checkout -b feature\test develop
  3. 进行任何代码更改
  4. git commit -a -m "Make test code changes"
  5. git checkout develop
  6. git merge --no-ff feature\test
  7. git branch -d feature\test
  8. git push unfuddle develop

好的,所以下一部分我不确定。我们已将功能更改推送到集中式 Unfuddle 服务器,但是其他开发人员需要获取更改,因此他们是否需要创建一个“开发”分支然后执行git pull unfuddle develop?我读过 fetch and merge 比 pull 好,是这样吗?如果是的话,会是git fetch unfuddle develop那时git merge develop吗?

4

1 回答 1

1

听起来很扎实。

关于pullvs fetch,我认为如果你确切地知道 pull 的作用(fetch/ merge),你就可以自由地使用它。很多 git 的新手在pull不了解它的作用的情况下使用它,但似乎你掌握了它。我只是确保你的团队知道有什么区别。

我没有看到的唯一步骤是部署到您的网络服务器 - 这些也应该执行fetch/mergepull更新。您可能希望从手动开始此过程,并考虑在未来将其自动化。您应该可以使用 git hooks 来做到这一点(Unfuddle 应该支持它们)。这些脚本会因您正在运行的服务器类型而异。

于 2012-11-06T17:20:20.023 回答