git - 集中式 GIT 工作流/部署 - 存储库初始化和功能分支

标签 git workflow branch centralized unfuddle

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

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

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

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

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

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

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

    git 初始化

  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 添加 *

  6. 开发人员 A 提交所有文件

    git commit -am '初始提交'

  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 "修改测试代码"
  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 is better than pull,是这样吗?如果是这样,会是 git fetch unfuddle develop 然后是 git merge develop 吗?

最佳答案

听起来不错。

关于 pullfetch,我认为如果您确切知道 pull 的作用(fetch/merge), 你可以自由使用它。很多 git 新手在使用 pull 时并没有理解它的作用,但你似乎掌握了它。我只想确保您的团队知道有什么区别。

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

关于git - 集中式 GIT 工作流/部署 - 存储库初始化和功能分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13247085/

相关文章:

Git:编写依赖于多个其他 Gerrit 更改的提交?

git - 如何从 Git 存储库的提交历史记录中移除/删除大文件?

Git工作流程(Dev>Staging>Live)基本技术问题

python - 频繁修改模型时的Django工作流程?

git - git clone 的进度指示器

version-control - Mercurial 工作流 - 我什么时候可以 rebase ,什么时候应该 merge ?

git - 有没有一种传统的方法可以在 git 中支持多个版本?

git - 新提交的 Git 分支没有显示

git - 如何使用 git

django - 同一个项目,多个客户 git 工作流程