每当我在团队中寻找使用git的正确方法时,我们总是会提到git-flow。
我们从一开始就开始将此计划用作圣经。
时间的流逝,我们最终发现将master保留为带有标记的commit的稳定分支是浪费时间。
为什么要标记稳定的提交,然后按PUSH以掌握已经标记的相同版本。标签存在,您可以随时返回此提交。为什么要麻烦我保留此分支仅包含标签?
这是我们使用的Git-Flow,它的工作原理就像一种魅力。
Master:实际上是我们的开发分支Release:我们创建一个release分支来做最后一个发布测试用例,然后在需要时添加修订。功能:我们从Master分支创建功能,然后将拉取请求发送给master。
实际上,它与gitflow相同,没有包含稳定的分支。
这样做的另一个优点是,MASTER是DEVELOP分支。因此,当新的队友进入该项目时,他可以从克隆项目开始,而他的主人已经与实际开发保持同步。
在图像中:
我的问题是,如果您只能用相同的结果管理4个分支,为什么还要使用原始的git-flow和5个分支?
我正在从分支 A 创建一个 git 分支 B。
$git checkout A
$git checkout -b B
Run Code Online (Sandbox Code Playgroud)
我更改了分支 B 中的一些文件,然后
$git add <files>
$git commit -m "a message"
Run Code Online (Sandbox Code Playgroud)
然后我在分支 B 处于活动状态时创建一个标签
$git tag -a <tag_name>
Run Code Online (Sandbox Code Playgroud)
我还在本地。
然后我结帐分支 A
$git checkout A
Run Code Online (Sandbox Code Playgroud)
将分支 B 合并到 A
$git merge B
Run Code Online (Sandbox Code Playgroud)
我推分支A
$git push origin A
Run Code Online (Sandbox Code Playgroud)
然后我推送标签,而我还在分支 A
$git push origin tag <tag_name>
Run Code Online (Sandbox Code Playgroud)
现在,如果我在遥控器上列出标签,我会通过以下方式看到两个标签:
$git ls-remote --tags
<tag_name>
<tag_name>^{}
Run Code Online (Sandbox Code Playgroud)
与^{}附加到一个第二条目
有人可以解释这里的原因是什么吗?
为什么我在遥控器上看到两个标签?
在本地,只有一个
$git tag -l
<tag_name>
Run Code Online (Sandbox Code Playgroud)
我这样做的顺序是常见的吗?或者建议使用不同的顺序?我真的只想在分支 B(以及那里的所有文件)上添加一个标签。
我只是在尝试 GitHub 操作,并且有以下工作流程。
feature/ticketno)上创建 PR 时,我想针对新创建的 PR 分支运行一些测试。我发现的一个解决方案是在操作步骤中添加 if 条件,以避免针对 PR 上的所需分支(即 master、staging)运行测试。
但不确定这是正确的方法,我正在寻找合适的解决方案
我在某个地方读过*这样的设置会很好:
两个主要分支,每个服务器一个.
推送到主人发送更改为live;
推送到dev/stage(或者你称之为的任何东西)会发送更改到staging;
工作流程:
从dev创建分支;
在你准备测试之前在当地工作;
合并回dev;
推送到Hub,它将更改发送到dev/staging服务器.
一旦你准备好上线了:
从dev到master合并,
然后将master推送到Hub,Hub将这些更改发送到实时服务器.
两个主要分支,每个服务器一个.
所以我在"webroot/myliveapp /"上有一个分支"production",在"webroot/devapp /"上有另一个分支"development"
存储库应该在哪里?
更新:
我的意思是:
根据这个流程,我们将有:
主要回购;
裸露的回购中心;
克隆;
开发和生产分支应该属于一个存储库,对吧?
如果这是正确的,那么我们应该发出FIRST git init命令吗?在我们的Prime回购?
所以我们将:
"webroot/myliveapp /" - 生产部门;
"webroot/devapp /" - 开发部门;
"webroot/.git" - Prime存储库;
这有意义吗?
或者Prime库是否应该与我们的生产分支机构位置相对应?
*注意:如果您需要有关我正在尝试实施的工作流程的上下文,请参阅:http: //joemaller.com/990/a-web-focused-git-workflow/
我想从存储库中取出,我相信来自该存储库的任何更改集与我的相撞,是更好的选择.
我如何自动化拉动,这样我就不必处理任何合并冲突,而且我从中拉出的存储库总能赢得这场战斗?
看看命令行选项,我不确定git pull --squash我是否正在寻找,或者我是否必须采用某种合并策略.我无法弄清楚我会传递给谁
-s <strategy>
--strategy=<strategy>
Run Code Online (Sandbox Code Playgroud)
要么
-X <option>
--strategy-option=<option>
Run Code Online (Sandbox Code Playgroud)
如果这确实是我应该使用的标志之一.
我在一个团队工作,我们有一个名为 development 的分支。从这个分支我在自己的计算机上创建了另一个本地分支。当我在本地分支上时,运行命令“git merge development”有什么区别和我当地分支机构的“git push origin development”?
git 新手,每个团队都有自己的最佳工作流程理论。
在Git-config中,您可以看到:
简单 - 在集中式工作流程中,像上游一样工作,如果上游分支的名称与本地分支不同,则会增加安全性以拒绝推送.
当推送到与您通常拉出的遥控器不同的遥控器时,请作为当前工作.
所以Git必须那样工作之间做出选择upstream或者current.但如何Git检测工作流程类型?是否Git觉得工作流程是centralized,如果明白我们想要一个沟通bare信息库?
我使用 git flow 方法,并且需要有关如何在远程 git 服务器上推送未就绪功能的建议。
默认情况下我们可以这样做(如果功能已经完成)
git checkout -b feature develop
Do something...
git commit -am "Message"
git checkout develop
git merge --no-ff feature
git push origin develop
git push origin feature
Run Code Online (Sandbox Code Playgroud)
如果我的功能尚未准备好,但我想将其推送到远程服务器上怎么办?
我尝试这样做:
git checkout -b feature develop
Do something...
git commit -am "Message"
git push origin feature
Run Code Online (Sandbox Code Playgroud)
但如果我看一下提交的图形方案,似乎开发和功能是同一个分支(但当然它们不一样)。
免费和专业版的 Wordpress 插件。PRO 版本包含分散在代码库中的其他文件。
在 git 中跟踪两个版本的最佳策略是什么,满足以下约束:
有许多 Wordpress 插件遵循这种完全免费的与专业版的二分法。它们是如何版本化的?
目前我们的工作流程要求当我们想要提交到本地分支时,我们必须首先从远程分支获取和拉取,以便我们的本地分支更新。然后我们可以在本地进行提交,然后推送到远程。如果我们先提交到本地分支,然后从远程分支拉取更新,Visual Studio 将自动为我们提交合并,无论是否有冲突的更改。我们希望避免不必要的合并。
所以我的问题是,是否有选项或操作可以在 VS 中自动执行此操作?您单击的一个操作将首先从远程拉取,更新本地,然后提交,然后推回远程?现在我们正在手动执行所有三个操作,以避免 VS 生成不必要的合并提交。
VS 有一个选项“提交并同步所有”,其目的似乎是为了我们正在尝试做的事情,但事实并非如此。它只是先提交,然后进行拉和推,这仍然会产生不必要的合并。
git-workflow ×10
git ×9
git-flow ×2
azure-devops ×1
branch ×1
git-branch ×1
git-merge ×1
git-pull ×1
git-tag ×1
plugins ×1
wordpress ×1