需要一些帮助来组织分支和工作流程。
前提条件:10 名使用 git 的开发人员,0 单元测试覆盖率,10^5 行代码。
在我们的仓库中,有一个master充当production.
每个功能都在不同的分支上开发,这也创建了一个新的域 ( branch.qa.com)
完成后,QA 团队会检查更改branch.qa.com,然后将其合并到主服务器中并自动推送到生产服务器。
问题:
分支 A 可能有css变化。它被上传A.qa.com并被检查。
同时,开发人员B从其分叉分支master并对其进行处理,修改相同的css.
这两个更改对于其分支来说似乎都是合法的,但可能会发生这种情况,即更改B实际上会破坏 上的某些内容A。
合并A进去master就ok了 那么合并B到master就会对 所做的改变产生不好的影响A。
请问您排除这种情况吗?你如何合并pre production?
我有一个由几个人组成的团队,使用 git flow 方法(master、develop、hotfixes、features、releases)和一个远程裸存储库来处理同一个 git 存储库。
我们有一个包含一些提交的修补程序,已成功合并到 master 中,一切都很好。现在,一周后,经过很多更改,在继续开发之后,我们有了一个发布分支,但也没有合并到 master 中。
我们注意到系统中的一些文件已恢复到修补程序之前的状态。这些文件最近才在提到的修补程序中被触及,并且在开发分支中没有对它们进行进一步的更改。
奇怪的是,我在 git 日志历史记录中找不到显示任何这些文件存在冲突的合并,这可能表明团队成员遇到了冲突并且没有正确解决它。
我所能看到的只是添加了所需更改的修补程序的提交,但我找不到恢复这些更改的后续提交。
git whatchanged -p -r -m -- myfile我再次尝试使用,我看到的只是修补程序的提交。
我怎样才能知道这些文件发生了什么?这可能是我的存储库中的损坏吗?
详见我们的项目是使用gitflow这里我的问题是如何做QA适应这个。
考虑我有一个 master 分支和一个 hotifx 分支。一旦修补程序完成,那么我相信 QA 应该在修补程序发布时做它的工作。如果它没有通过,则使用此修复程序更新修补程序。QA 再次发布。现在,当修补程序 RC 通过 QA 时,代码将合并回 master(应该没有冲突,并且只是作为 master 的直接副本没有更改)。然后从 master 完成生产发布。令人担忧的是,QA 尚未验证此版本。他们已经验证了一个修补程序版本。
我们如何协调 master 仅用于生产代码,但对接近足够的生产代码进行 QA 测试?任何人对这种情况有任何经验吗?我看不到任何详细说明 QA 和测试如何融入 gitflow 的内容。
谢谢
在过去的几个月里,我们一直在工作中松散地跟踪 git flow,但遇到了漫长的 QA 等待问题。
这是我们的流程:
不幸的是,客户有时可能需要长达数周的时间来批准一项功能。这可能是由于积压、内容创建、人员流动等原因。
但是,与此同时,新功能可能已合并到开发中并推送到开发服务器进行审批。假设第二个功能获得批准并需要尽快部署(当然)。我如何在不带第一个功能的情况下从 dev 中获得第二个功能?
总的来说,我们对 git 比较陌生。我们已经使用了大约 6 个月,并且使用过 GitHub 和 BitBucket。我们尝试通过使用 GitBash 尽可能多地学习,以便深入了解 git 的核心。
我们正处于真正想要考虑我们的分支策略的阶段,因此我一直在做一些研究。
在我看来,GitFlow 对我们的要求来说过于复杂。我们总共参与了大约 20 个不同的项目,每个项目可能每 2 个月左右发布一次。查看 GitHub Flow 后,这似乎是一个非常直接的选项,可以满足我们的需求 - 但是它似乎确实有一个缺陷,我希望人们对此发表意见。
master 分支中的任何内容都是可部署的。我们部署到 UAT/QA 环境,该版本可能会保留 3-4 周,具体取决于客户和/或我们签署所有内容所需的时间。与此同时,其他人可能需要做一些完全不同的事情。在这个阶段,基于 Github Flow 的流程,如果该用户从 Master 那里获取了一个分支,他们将包括此时实际上仍在 QA 环境中的更改。那么,是不是我误解了 GitHub Flow 的第一点——即 master 分支中的任何东西都是可部署的——如果代码已经通过 QA 等,这可能才正确吗?
如果是这样的话,流程实际上看起来更像吗?:
我认为 GitHub Flow 中的第 1 点让我们感到困惑——当发布仍处于 QA 阶段时,我们当然不应该将其推回 Master——这将使 Master 分支可能不稳定,当然不是目前在生产中的分支。
我工作的公司正在使用 gitflow。
我们遵循每个功能分支的方法,其中实现、测试单个功能,然后 PR 进入开发阶段。当需要发布时,我们会在开发之外创建一个发布分支 - 我们在发布分支上触发构建并将其部署到 TEST 环境。由于合并到开发中的多个功能分支,可能存在一些集成缺陷。这些是直接针对发布分支解决的。一旦我们很高兴与发布分支,我们部署(确切的状态同样是签署过建立由QA),以督促。
在这个阶段,我们需要让我们的发布分支代码回到 develop 并进入 master,这两个分支都是受保护的分支。假设有一些针对 release 分支的提交,我们需要做 2 个 PR,即一个用于 release->develop,一个用于 release->master。
几个问题:
谢谢。
假设有 5 个功能合并到开发中(例如 ABCDE),但其中一个功能没有通过 QA(例如 C)。
如何在排除功能的同时启动发布分支?
我想通过仅读取.git文件夹中的内容来获取当前分支或标签。
我看了很多的解决方案,它们都依赖于执行git status,git branch,git describe,或类似的东西,然后解析输出。但是如果我们不能确定有一个git二进制文件可以调用怎么办?我们不能依赖那个。
对于分支,它看起来几乎非常简单:cat .git/HEAD,但对于标签,它变得有点复杂。我git-flow用来创建我的特征分支和我的标签。当我切换到标签时,我得到:
$ git checkout tags/v0.11.2
Note: checking out 'tags/v0.11.2'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you …Run Code Online (Sandbox Code Playgroud) 我已经为我继承的 repo 配置了 gitflow,我有三个环境:
我们还使用修补程序来修复生产问题。
您可能会推断出,在我们的质量(测试期间)期间,我们实际上无法进行热修复,因为生产环境和质量都取自master的最新提交
我想知道以下方法是否有效并且更适用于 git-flow?
假设,如果上述方法可行,在质量(测试)期间(即发布开始后),我需要进行修补程序,这不会以某种方式丢失 - 我很确定,因为这是提交给在制定和主分支,它是不可能的,只是双重检查。
还假设如果 1. 是可行的 - 您可以从发布分支分支出来以便代码审查修复合并到发布分支中?即使是最小的修复,我们也会进行代码审查。
我使用git-flow. 基本上,我已经完成了一些编码,然后我编写了这些确切的git命令:
git flow init (and a bunch of enters)
git remote add origin <my_repo_address>
git flow feature start Argparsing
git add .
git commit -m "<message1>"
git rm tests/*
git commit -m "deleted unused stuff"
git flow feature publish
Run Code Online (Sandbox Code Playgroud)
好吧,我想在我的feature/Argparsing分支上看到两个提交。我转到我的远程存储库GitHub,我看到了这个:
所以在第二个提交消息中,我补充说Initial commit,这是我做的第一次提交。但是,我想我不必这样做,因为git-flow首先为我添加了单独的初始提交。
正如你所看到的,提交是空的:
所以我的问题是:我想这是一种理想的行为,那么它是否只会在我实际启动具有功能的回购时发生,还是总是这样?顺便说一句:初始化git-flowrepo的正确方法是什么?我的意思是,在git flow init我应该提交(并且可能推送)某些内容之后develop,master还是应该继续处理我的功能,然后合并到develop,然后有一天到master?