问题标签 [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 投票
5 回答
33879 浏览

git-workflow - Git 工作流程图创建是通过图形/流程图设计工具完成的?

当我查看大多数网站时,人们以图片的方式展示他们的 git 工作流程。我想知道哪个工具用于相同的?
例如https://wiki.phpbb.com/images/c/c8/Phpbb-git-workflow-small.png
http://nvie.com/posts/a-successful-git-branching-model/

我正在为企业实现 git,并希望显示类似的图表表示(如示例所示),所以我想知道是否有工具可以帮助我构建它

0 投票
1 回答
928 浏览

git - 使用快进提交进行合并的 git 工作流

我与许多开发人员一起在几个项目中使用 git。我通常的工作流程是针对特定功能/请求在本地分支,将我的更改合并到上游跟踪的本地分支作为快进合并,然后推送更改。我总是为一个单一的提交分支。我从来没有在我与其他人共享的分支上进行本地提交,所以我可以自由地在本地进行 rebase/muck,直到我将我的更改推送到上游。作为一个偏好问题,我喜欢我的合并尽可能快进提交。例如,如果一个项目的版本 1 的所有内容都由origin/v1分支上的所有开发人员推送,我会:

最终,我想将我的更改合并到v1本地并推送到origin/v1. 我会签出git fetch originfeature-A。如果进行更改,我将结帐v1并合并

现在为feature-AI checkout feature-A、rebase to v1、checkout v1、mergefeature-A和 push v1back实现快进合并origin

非快进提交没有错,合并提交也没有错。同样,这只是一个偏好问题。我想知道是否有更好的工作流程来完成同样的事情,而无需通过所有分支机构的结帐。可能有一个我不知道的 git 命令在我在更新的分支feature-A之上重新设置基础后会起作用。v1

https://stackoverflow.com/a/4157106/620304看起来可能会有所帮助。一个可能的工作流程是在我 rebase 后v1使用来自 origin 的最新更改进行更新并更新v1到本地的 HEAD :feature-A

我确信可能有更好的方法。非常感谢任何帮助/输入。

0 投票
3 回答
1194 浏览

git - 拉上游合并后,奇怪的 git 行为恢复在本地分支中所做的更改

我们有一个由大约 10 名开发人员组成的团队,我们经常遇到有人的更改意外恢复的情况。我们的工作流程非常简单。开发人员进行本地提交,从上游拉取,然后推送到上游(简而言之,这是我们的工作流程,但它也可能包括从开发人员的个人上游分支在 Github 上发出拉取请求)。奇怪的行为是开发人员进行本地提交,从上游拉取,然后发现他的更改已恢复。就好像 git 正在解决与theirs策略的冲突,尽管我们都没有这个设置,也没有涉及实际的合并冲突。变化更像是这样的:

本地提交:

合并后:

没有其他提交涉及这部分代码,也没有人手动解决合并冲突(无论如何都不应该存在)。在开发人员完成合并并将其推送到上游后,我们有时会看到另一个开发人员提交的差异日志,该日志似乎反转了第一个开发人员所做的更改。通常,此还原提交以其他人的名义出现,尽管他们没有触及相关文件。

其他一些开发人员的提交:

我们不知道这是如何发生的或如何重新创建它。也许我们在某些方面缺乏 git 协作的知识,希望有人能指出我们正确的方向。

编辑 这个问题似乎只影响 css/scss 文件。我注意到差异标头显示了错误的信息:

请注意,标题将此样式标识为img.badge-pic. 这种风格实际上在文件中出现得更早。git 可能无法解析 css/sass 吗?

0 投票
3 回答
1012 浏览

git - 在 Git 中,当推送主分支时,来自开发分支的提交也会被推送。这应该发生吗?我正在使用 Gitflow

当我开始使用 git 时,我的工作流程基于 Gitflow 模型:http ://nvie.com/posts/a-successful-git-branching-model/ 。我认为主要想法是保持对适当分支的提交;因此,例如,主分支将只有从开发分支合并的提交......即标签...... 0.1。0.2。1.0 在图中。我不完全理解 git 是如何工作的,或者这个工作流程是如何运作的,但这就是我的想法,特别是因为该页面上的图形只显示了 master 分支上的这几个提交,而不是所有的开发提交。

我将我的 repo 推送到 Bitbucket,当我在开发分支工作时一切顺利,但是当我完成开发时;然后向上推主分支,我发现 Bitbucket 中的主分支现在包含我在开发分支上所做的所有提交,而我认为我只会包含最后一个提交(我合并的那个)。有人可以解释为什么会这样,这是否是预期的行为,如果不是,我可以做些什么来让我的工作流程与上面的模型保持一致。我使用 Smartgit。

0 投票
1 回答
477 浏览

git - Git 工作流、Nvie 分支模型前后

遵循 Nvie 的 git 分支模型,为什么在将相同的 'release' 分支合并到两者之后,我最终会得到 'develop' 和 'master' 前 1 和后 1?如果将相同的“发布”分支合并到每个分支中,那么 master 和 development 不应该同意吗?

$ git log origin/master ^origin/develop

$ git log origin/develop ^origin/master

我错过了什么?

0 投票
1 回答
1699 浏览

git - 如何停止使用未合并的提交关闭拉取请求

任何人都可以建议一种方法来停止/通知用户在他们试图删除的分支上的 github 上有一个开放的拉取请求吗?

我们目前使用以下分支masterrchotfixprod表示各种环境。当我们有一个hotfix想要提升的分支时,prod我们删除该分支并在它构建时prod强制推送该分支。hotfix通常这将按预期工作。但是,在我质疑的示例中,我们遇到了一些情况,即我们将hotfix部分更改部署到生产环境(HEAD分支hotfix不是正在部署的内容。在某些情况下,这些仍在等待以拉取形式进行的代码审查要求进一步的出色工作。

我正在寻找的是一种在用户尝试删除修补程序分支时通知用户的方法,该分支HEAD不是我们部署到生产中的,更重要的是存在未完成的合并请求。

除了远程分支已被删除之外,我们无缘无故地自动关闭了拉取请求,此时不需要这样做,只需从prod分支重新创建并重新打开请求即可。这是由于我们的 git 工作流程,我们如上所述删除了这些分支,但理想情况下允许它们保持打开状态以完成拉取请求,然后进行后续部署,并且只有在没有未完成的工作时才会删除分支。

0 投票
1 回答
409 浏览

git - 由于审批机制从SVN迁移到GIT

我们目前在做一个非开源项目,团队大约 50 人,平均每天提交 20-30 次。由于其中一些人是初级开发人员,我们必须实现一个不允许所有人都提交到我们的主存储库的系统。

到目前为止,我们使用的是具有这种结构的 SVN:

  • trunk - 包含所有开发人员代码
  • 分支 - 包含所有经过验证的代码

有时,一位资深开发人员“进入”主干并将其与分支合并,拒绝所有未批准的代码(当有大量未批准的代码要恢复时,这会变得很疯狂)。最后,当主干只有批准的代码时,两者之间会完全合并。

最近我们开始用 Git 和 GitLab 进行一些测试,看看 Git 审批系统是否值得从 SVN 迁移,以缓解所有这些疯狂的合并。

起初它看起来很有希望,但过了一段时间我们得出了一个令人失望的结论,即没有神奇的公式。我们创建了一个受保护的主分支,只有高级开发人员才能访问将更改推送到其中,但随后出现了有问题的部分……初级开发人员。

也许是因为我们太习惯了 SVN 的方式,我们找到的唯一解决方案是创建一个“初级分支”,但这基本上会模仿我们已经使用 SVN 的行为(和令人头疼的问题)。

请告诉我我们遗漏了什么,或者我们是否以错误的方式处理问题。

编辑 当我说批准的代码时,我指的是对所有类结构的验证、正确的对象实例化......而不是换行符、制表符(和类似的)是否正确。

0 投票
1 回答
137 浏览

git - 拒绝不是合并提交的提交

这是我使用的工作流程:

  1. 在分支中进行更改A
  2. 结帐分行B
  3. 合并从一个分支A到另一个分支的更改B
  4. 同步(推送和拉取)分支B到远程分支。
  5. 结帐分行A
  6. 返回第 1 步

问题是有时我会忘记第 5 步,而不是分支A,而是对分支进行更改B

是否可以配置分支B以拒绝“常规”提交并仅允许合并提交?

0 投票
0 回答
4531 浏览

git - git下如何与其他开发者共享一个分支

一般来说(我可以提供更多细节),我们的工作流程:

1)我们有prime repo一个远程服务器主机。

2)我们有bare repo一个远程服务器主机。

3)我们在本地计算机上和本地存储库上有一个带有工作树的裸仓库的克隆bare is setup as a remote

在此之下,我们至少使用两个分支:dev 分支和一个 master 分支。

挂钩将管理此过程,以根据 HEAD 放置在 dev 或 master 上进行更改。

所以,这是一个很好的工作流程,但我想知道是否有人可以帮助我们做得更好。

假设用户 A 正在他的本地工作branch test-this-thing

他/她希望另一个开发人员也能在这个分支上工作。

考虑到上面的工作流程,有没有办法推送一个特定的分支,以便其他用户也可以从该特定分支中提取该工作,以便他们可以一起进行测试这个事情?

更新

集线器或原点重命名。所以:

如果我在本地做:

我得到了裸仓库的分支。好的。

如果其他开发人员 B 这样做:

它将成功地fetchmerge测试分支进入testdeveloperB。

因此,假设开发人员 B 对本地 testdeveloperB 分支进行了更改,并希望将这些更改推送到集线器测试分支。

他在分支 testdeveloperB

我试过了:

git push hub test:testdeveloperB- 它说没有像测试这样的想法。

我试过了:

git push hub testdeveloperB:test- 显然没问题。

所以关于这一点push- hub 之后的第一个参数是我们要推送文件引用的地方,第二个是我们希望文件引用去的地方。

既然我们在本地 testdeveloperB 分支上,为什么我们需要明确引用它?

为什么我们不能简单地做git push

更新答案, 因为我们还没有在我们的 git 配置上设置它,所以 git 不知道该怎么做。

提前致谢。

0 投票
1 回答
91 浏览

git - Git 工作流程建议

我在 github 上有一个私人仓库,大约有 7 名开发人员在积极地工作。我的回购分支如下

现在发生的事情是每个开发人员检查到他的本地分支,推送到他的远程并进行开发。

我想要实现的是

  1. 创建沙箱分支
  2. 一旦开发人员推送到他的远程分支,就会自动将其拉到沙箱并运行测试。
  3. 如果测试是好的推动发展
  4. 如果测试不好,则恢复最后一组更改并通知开发人员

这样,只有工作和测试过的代码才能在开发中结束。我知道我可能会遇到这样一种情况,如果 2 个开发人员提交到分支 A 和 B,并且我将两者都拉到沙箱中,并且如果测试失败,我将不知道哪一个失败。

这可能吗?