问题标签 [git-workflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2868 浏览

git - 部署 git 分支

在为使用 git 进行 Web 开发的工作流程进行了挣扎和整理之后,我的任务是在最后一秒添加一个登台服务器。我们在本地开发/测试并推送到一个 repo,现在需要一个沙箱,这样其他部门的人就可以在不破坏东西的情况下尝试新事物。

远程 repo 需要两个长期运行的分支(本着 nvie 的分支模型的精神),master 和 development。

我们需要能够推送到一个repo,并将develop分支签出到test.site.com docroot,准备好后,将develop合并到master,将master签出到site.com docroot

所以在服务器...

在我们的本地机器上...

并返回服务器使代码生效

并且在本地

帮助问号或其他建议表示赞赏。

编辑: 到目前为止,我正在尝试一些答案。在此期间提出了一个完全老套的想法,并认为我会分享:

一个接收后的钩子来统治他们。

我们克隆一个裸仓库并跟踪开发。将开发推到起源/开发。

接收后 - 将 GIT_WORK_TREE 设置为 test.site.com,结帐 -f 开发

如果提交消息包含“merge_master”,则将 GIT_WORK_TREE 设置为 site.com docroot,

将master合并回本地开发并拉取

尘埃落定后,使用 difflog 发送电子邮件,拧紧双手,喝一口浓烈的东西。

有多少种不同的方式可以打破?

0 投票
1 回答
222 浏览

git - 我的自动 git 更新过程应该是什么样的?

我来自颠覆背景,最近我的公司切换到了 git。我曾经在我的笔记本电脑上有一个 cron 条目,用于每晚更新大量结帐。这样,我将针对我们系统不同组件的当前版本运行;特别是我没有积极开发但依赖的部分。我想用 git 实现同样的目标。

这是我使用 svn 的旧更新过程:

我已经阅读了很多关于该主题的博客文章并四处询问,但我没有找到很多一致的答案。此外,到目前为止,我所看到的解决方案都没有达到我正在寻找的程度。我接受了所有这些意见并创建了下面的脚本。

我应该如何处理子模块?

有没有我没有考虑到的情况或陷阱?

谢谢你。

0 投票
2 回答
303 浏览

git - 使用 git 和单独的分支进行协作,而不添加一堆冗余提交

我正在与一位设计师合作开展一个名为“已验证帐户”的项目

我正在一个名为的分支上开发,verified_accounts而设计师在一个名为chris_verified_accounts. 我们一直在定期合并彼此的更改,当项目完成后,我们将合并verified_accountsmaster

然而,所有这些合并都导致了一堆垃圾/重复提交。例如:

http://dl.dropbox.com/u/2792776/screenshots/2012-03-02_1024.png

提交 (1) 是仅包含提交 (2) 的拉取请求的合并。这意味着这些提交本质上是相同的(它们具有相同的差异等)。同样,commit(3) 是只合并 commit(4) 的合并,意思是 3 和 4 也基本相同

管理这些相同提交的最佳方法是什么?即,对于我的代码中的每个功能更改,我想要一个关联的提交。这样,如果我在评论一个变更集,我可以确定我在正确的地方发表评论(而不是评论另一个 dupe-y 提交的完全相同的变更集)

这种事情的最佳做法是什么?

0 投票
1 回答
3317 浏览

git-workflow - GIt Workflow 开发和生产 - 我应该在哪里创建存储库?

我在某处读过*这样的设置会很好:

两个主要分支,每个服务器一个。

推送到 master 将更改发送到 live;

推送到 dev/stage(或任何你称之为的)发送对 staging 的更改;

工作流程:

  • 从 dev 创建分支;

  • 在您准备好测试之前在本地工作;

  • 合并回开发;

  • 推送到 Hub,它将更改发送到开发/登台服务器。

一旦你准备好这些上线:

  • 从 dev 合并到 master,

  • 然后将 master 推送到 Hub,它将这些更改发送到实时服务器。

两个主要分支,每个服务器一个。

所以我在“webroot/myliveapp/”上有一个分支“production”,在“webroot/devapp/”上有另一个分支“development”

存储库应该在哪里?

更新:

我是说:

根据这个流程,我们将拥有:

  • 主要回购;

  • 裸回购中心;

  • 克隆;

开发和生产分支应该属于一个存储库,对吗?

如果这是正确的,那么我们应该发出 FIRST git init 命令吗?在我们的 Prime 回购中?

所以我们会有:

“webroot/myliveapp/” - 生产分支;

“webroot/devapp/” - 开发分支;

“webroot/.git” - 主要存储库;

这有意义吗?

或者 Prime 存储库是否应该对应于我们的生产分支位置?

*注意:如果您需要有关我正在尝试实施的工作流程的上下文,这是一个:http: //joemaller.com/990/a-web-focused-git-workflow/

0 投票
2 回答
456 浏览

git - 我可以将我的服务器设置为在有新提交时自动从分支中提取更新吗?

假设我在 git 存储库中有一个项目。该项目有一个名为“稳定”或“生产”的分支,其中项目的当前版本始终是稳定的。我有一个生产服务器,理想情况下应该总是有最新版本的稳定分支。我知道我可以让一个 cron 作业在特定的时间间隔运行一个 pull,但我对这个解决方案并不满意。在发现稳定分支中的错误后,我通常可以在一个小时内推送多达 5 个修补程序。我希望生产服务器在推送这些新提交后立即提取它们。

这样做的最简单方法是什么?我的后备解决方案是让我的生产服务器每分钟左右运行一次拉取,因此任何不足的事情都会很棒。

0 投票
1 回答
774 浏览

git - 将 Github 存储库的拉取请求与私有存储库同步

我有一个 Github 存储库和一个私有内部存储库。目前,我们只是在 repositoy 的 git/config 文件中添加两个 repo 引用,都作为远程源。因此,当我们推送更改时,它们会同时转到两个存储库。我们开始将其作为冗余策略。

但是,我们开始使用拉取请求。这背后的主要目标是:一个没有经验的开发者分叉主仓库,进行更改,测试它们,将它们拉到他们的仓库,然后将它们拉到主仓库。更有经验的开发人员会审查这些更改并合并或不合并到主存储库中。但是,在第一次测试中,这导致存储库不同步。

有没有办法让它们保持同步?我也很感激有关更好方法或更好实践的提示。

0 投票
1 回答
567 浏览

git - 对于我们的 2 人网络团队来说,理想的 Git 工作流程是什么?

我们正在寻找使用 GIT 来帮助管理我们的 Web 文件,因为我们刚刚聘请了第二位开发人员。

我们不会使用 GitHub,但我们确实有一个 NAS 驱动器(共享驱动器),所以我们最初的想法是这样的某种计划:

  • DVCS(根)
    • 主控(NAS)
      • 项目一
      • 项目 2
    • 开发者1 (NAS)
      • 项目一
      • 项目 2
    • 开发者2 (NAS)
      • 项目一
      • 项目 2
    • developer1(本地工作站)
      • 项目一
      • 项目 2
    • developer2(本地工作站)
      • 项目一
      • 项目 2

所以基本上每个开发人员都会将主项目存储库克隆到他们的开发人员存储库(质量控制),然后他们会将这个开发人员存储库克隆到他们的本地存储库。他们将进行更改/编辑,然后提交并将这些更改推送回他们的开发人员存储库,以供高级开发人员批准。一旦他们这样做,就会被推送给主人。

我不确定这是否是正确的方法,或者我是否应该使用分支,或者我需要不同的工作流程?

0 投票
3 回答
1662 浏览

git - 如何将相同的编辑推送到 git 中的不同分支?

我有一个 Git 存储库,它有一个 master 分支。现在我想创建在每个分支(例如数据库)中具有相同更改的不同分支。所以我可以在master中有这些文件:

  • 一个.java
  • b.java
  • 数据库-1.xml

和两个分支,称为branch-1branch-2,带有这些文件:

  • 一个.java
  • b.java
  • 数据库分支 1.xml

  • 一个.java
  • b.java
  • 数据库分支 2.xml

现在,让我在 中找到一个错误a.java,显然我想修复它并在每个分支中提交相同的更改。我怎样才能实现我的目标?

注意:数据库文件必须保持不同,其他文件将始终相同。

0 投票
1 回答
131 浏览

git - Git结帐似乎不起作用

我是一个完全的 git 新手,但我一直在使用 Git 作为一种轻松地将 Web 应用程序“上传”到我的生产服务器的方式。这是我的工作流程:-

  1. 在本地进行一些编码并提交到master分支,当我准备好发布到生产环境时,我会这样做:-

  2. git checkout production

  3. git merge master

  4. git push origin production

其中 origin 是生产服务器上的一个裸存储库,那么我有一个接收后挂钩,它执行以下操作:-

  1. git clone /dir/to/bare_repo /dir/to/production

  2. cd /dir/to/production_dir

  3. GIT_DIR=/dir/to/production/.git

  4. git checkout -f production

最后的结帐命令产生以下消息:-

分支生产设置以从源头跟踪远程分支生产。切换到新的“生产”分支

然而我在本地所做的更改并没有出现在 /dir/to/production

任何建议将不胜感激!

编辑:只是想我应该提到更改出现在本地的生产分支中,因为它们应该git merge master在生产时出现。这是远程克隆存储库上的结帐似乎不起作用

0 投票
1 回答
149 浏览

git - 子项目的 Git 工作流程?

我们有一个定制的项目“kickstart”

这个 kickstart 可以很容易地添加模块。

当我们构建这些模块时,我们都基于版本控制的 kickstart 的一个干净的主副本来构建它们。

当我们开始一个项目时,我们创建一个空的 repo,将 kickstart repo 设置为远程,从远程拉取。当核心有更新时,我们再次从远程拉入。

这很好用。

但是我们有我提到的模块,我们将它们全部构建为一个新项目。

我们想要对所有这些模块进行版本控制。

模块的文件实际上驻留在模板中。

我们的工作流程看起来像这样

因此,站点 1、2 和 3 是它们自己的 git 存储库。

它们都包含 kickstart,它是一个 git 存储库

其中一些共享模块。

现在我们不从这些向上游推送,如果我们在站点 1 中确定某些东西运行良好,我们将检查 kickstart 的干净副本并在那里进行更改,然后将它们拉入所有不同的站点。模块也是如此。

但我的基本问题是,我们将模块放在哪里?他们取决于那里的启动。

一个想法是将它们作为 kickstart 的分支,我也听说过子模块和子树,但不知道它们是如何工作的。

构建此工作流程的最佳方式是什么?