问题标签 [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.
git - 为 public_html 目录使用主分支克隆
我们正在使用安装在 Web 服务器上的 git 进行开发,并且我们在 public_html 目录之外放置了一个裸 .git 项目,然后我们将 master 分支克隆到 public_html 内的目录中。这使我们可以推送到主分支,而不必担心已经签出的分支的错误。
我们有这样的想法(并且已经检查过,到目前为止效果很好),我们可以在修复主分支并再次拉取时检查单个提交头作为快速回滚。执行此操作时是否需要了解任何已知的缺点或安全问题?
git - 推送到远程分支以获取拉取请求
我迷失在不同的文章和 stackoverflow 问题中,无法集中精力找出 GIT 的命令。这是我想做的
- 我使用 eclipse Git 从 master 创建了分支。
- 我切换到那个分支
- 做了我的改变
现在,我想
- 在本地提交更改(`git commit -m "comment"')
- 推送到存储库作为分支,
Master
以便我可以创建pull request
. 一旦拉取批准,它将merged
进入主人。但是我如何将我的本地推送到上游以便创建分支并且我可以发出拉取请求?
git - 在使用 GIT 时,我应该遵循什么工作流程在多台计算机中使用和更新 Pimcore 实例?
我希望能够在多台计算机中使用和更新 Pimcore 实例,同时使用 GIT 作为版本控制。
在 Pimcore(版本 4,如果有帮助)中是否有关于更新和 GIT 的推荐工作流程?
在 GIT 存储库中,我应该跟踪 pimcore/ 文件夹吗?和供应商/文件夹?
无论哪种方式,我必须做些什么来更新 Pimcore:
- 我可以在我的电脑中更新、提交,然后将修改后的 pimcore/ 和 vendor/ 文件夹推送到其他开发/生产系统吗?它会起作用吗?
或者
- 我是否应该更新 Pimcore 的每个实例,然后以某种神秘的方式希望每个 pimcore/ 和 vendor/ 文件夹最终都相同?
有更好的选择吗?你认为最好的工作流程是什么?
谢谢你。
git - Git - 使用 rebase 将公共分支合并到 master
我们目前有 3 名开发人员在一个功能分支上工作。我们不断向 feature_branch(和 origin/feature_branch)提交和推送 WIP 提交,每隔一天我们将 master 合并到 feature_branch,以确保我们及时了解正在发生的所有其他更改。
我们的 feature_branch 现在包含大约 100 个提交(包括许多合并提交),可以很容易地压缩成一个或两个提交。到目前为止,当一个功能分支上的工作完成时,我们只是将它合并回 master,这导致意大利面日志和检查点提交被推送到 master。
相反,我们想要变基。如果我们决定我们在 feature_branch 上的工作已经完成,并且没有开发人员会从/向这个分支拉取或推送新的提交 - 并且是时候将我们的更改合并回 master,rebase 会违反 rebase的黄金法则吗?
在阅读了这个主题之后,在 master 之上 rebase interactive 听起来是个好主意(然后合并回 master,这将是一个 ff 合并),但我只是想确保我没有遗漏任何东西。
此外,在我们不断将 master 合并到其中后,重新调整 feature_branch 有什么问题(为了保持更新)?压缩合并提交可以吗?
谢谢!
git - Git 如何检测工作流的类型:集中式或非集中式
在Git-config中,您可以看到:
简单 - 在集中式工作流程中,如果上游分支的名称与本地分支的名称不同,则可以像上游一样工作,并增加安全性以拒绝推送。
当推送到与您通常从中拉出的遥控器不同的遥控器时,作为当前工作。
所以Git
必须在喜欢upstream
或工作之间做出决定current
。但是如何Git
检测工作流的类型?如果理解我们想要与存储库通信,是否Git
认为工作流是?centralized
bare
git - Git 工作流程:如何合并仅在新分支上进行的提交
我们正在使用 git 来跟踪开发和版本化版本,并在合并分支时遇到了一些问题。这是我们的工作流程:
功能开发发生在从开发中创建的功能分支上,并在准备好后合并回来进行演示和测试。
这一切都很好,问题是当创建该功能分支的开发人员将他们的功能放入阶段分支进行部署时。因为他们在G分支开发,当他们去合并时,它包括EFG,当他们只想合并HIK时。
我们 git 工作流程的目标是让开发人员标记他们自己的代码以准备发布,并且协调整个开发分支将能够合并到部署分支中是不可行的,因为开发发生在世界各地。
是否有一个 git 命令来合并功能分支上的提交?我知道rebase和cherry pick,但是一个特性可以由大量的提交组成,开发中的合并可以赶上它们的特性分支。有更好的解决方案吗?
这个工作流程正确吗?我们是否正在尝试做一些不可持续的事情?
git - GIT:不止一个开发者在开发同一个特性
我对以下场景的最佳工作流程有疑问。
目前有2个分店:
- 掌握
- 发展
master 仅通过批准的合并请求接受代码。
鉴于 2 位开发人员致力于相同的功能,不同的部分,为该功能创建合并请求的最佳方式是什么:
- 每个开发人员都创建自己的?(他们都有彼此的代码,因为为了进步,他们直接相互推拉)
- 这不会引起问题,因为第一次创建合并请求会使其他更改?一次推送一个提交将非常乏味。也许只保留本地更改的分支并创建集成分支?但是合并请求本身不起作用,也没有多大意义。
- 其中一个为两者创建一个“完整”的合并请求?
- 审查它成为一项更大的工作,因为它有更多的代码,而且我们不能同时拥有 2 个合并请求的所有者
phabricator - 如何使用 Phabricator Diffusion 同步 2 个遥控器
我必须为我的存储库使用 2 个遥控器。例如。
- 一个是我的本地 git 服务器(gitblit)
- 一个是Github/bitbucket
此外,我必须使用 Phabricator 来管理这一切。所以我想的工作流程是:
我将更改推送到本地 git 服务器,我的朋友推送到 github。Phabricator 从本地 git 服务器 + Github 观察更改,并将其与其他远程更改同步。我尝试了镜像选项,但它删除了远程之一的更改,因为这是镜像应该做的。
所以我需要知道一种方法,我可以使用 Phabricator 来同步这两个遥控器。
git - 部分 git 分支合并的最佳实践
我们的客户改变了对我们的一个项目的一些大的新功能(我们称之为 FA)的想法,现在他想要这个功能的一个子集,但以不同的方式集成(我们称之为 FB),然后将所有初始请求功能,但与 FB 中所做的更改合并,重叠更改将从 FB 中获取。
我有这种 git 情况:
- 具有稳定版本的 master 分支,现已投入生产
- FA分公司
现在我从master创建了一个新的分支FB。
我需要整合 FA 的一些更改,然后做一些工作,然后将 FA 完全合并到 FB 中,最后将所有内容放到 master 分支
什么是最好的方法来做到这一点而不会变得疯狂并尽可能保留来自 FA 和 FB 的提交历史
git - git branch -d 失败,即使分支的更改已应用于 master
背景:
- 我想为使用 Git 进行版本控制的项目提供错误修复;
- 我没有对该项目的公共存储库的写入权限;
- 项目维护者要求通过电子邮件提交补丁。
工作流程:
- 我克隆了项目的公共存储库;
- 我创建了一个本地分支,在其中开发我的错误修复;
- 我将补丁通过电子邮件发送给维护者;
- 维护者应用补丁并推送到项目的公共存储库;
- 我将更改拉到我的本地
master
分支origin/master
; - 我确认我的补丁是由维护者应用的。
问题:
git branch -d
现在不会删除我的错误修复分支,给error: The branch ... is not fully merged.
但是,维护者应用的补丁包含了我在错误修复分支中所做的所有更改,因此从直觉上看,Git 声称该分支“未完全合并”似乎是错误的。
Git 书似乎同意我的看法。它只提到了失败的一个原因git branch -d
——因为分支“包含尚未合并的工作”——这不适用于我的情况。
我不确定我是否在 Git 中遇到了错误,或者 Git 是否不支持我的用例。
是的,我可以继续使用 删除分支git branch -D
,但我不想养成这样做的习惯,除非我想删除一个分支,其对工作树中文件的更改确实没有合并到任何其他分支。
我更愿意:
- 了解为什么 Git 声称错误修复分支“未完全合并”,即使分支的更改确实已应用于
master
,并且 - 找到比诉诸 更优雅的回应
git branch -D
。
例子
然后我通过电子邮件发送0001-Fix-bug-42.patch
给维护者。
维护者使用 来应用这个git am < 0001-Fix-bug-42.patch
,也许也做一些其他的提交,然后推送到 origin/master。
然后我做:
到目前为止,一切都很好!让我们看看我的补丁是否应用于这三个提交之一:
看起来它已应用于倒数第二次提交。让我们确认一下!
我在fix_bug_42
分支中所做的所有更改肯定已由维护者应用和提交。耶!
这意味着 Git 应该知道我现在可以安全地删除我的错误修复分支,对吗?错误的!
啊!
假设
现在,我想我知道为什么会这样了。我认为这是因为master
应用了我的补丁的提交(44a35eae3dc69002b6d3484cd17ad653ee7de3c3)与制作该补丁的提交(244540f ...)具有不同的哈希值fix_bug_42
。即Git认为因为commit 244540f 中不存在master
,这意味着fix_bug_42
“没有完全合并”。
问题
我的假设正确吗?
无论如何,除了使用,我能做些什么来解决这个问题
git branch -D
?(例如,我可以使用更好的工作流程来避免这个问题吗?)来自 Git 的这种意外(至少对我而言)行为是否代表 Git 中的错误,或者至少代表改进处理此用例的合法功能请求?