Git:处理子分支

标签 git github version-control gitlab

我已经尝试了将近一天来找出处理这种情况的最佳方法,但是即使我发现并理解了很多关于 git 如何工作的事情,我也无法找到任何“常规”的处理方式并解决以下问题git 上的情况(因为我缺乏经验)。
在我们的项目中,我们有一个 develop分支,我们需要从这个分支创建一个新的大特性分支,用于将其他小功能放在一起,这些小功能将从这个特性分支开始在其他子分支中开发。

A--B--C--D (develop)
          \
           E--F--G (feature-branch)
                  \
                   H (sub-branch)

这样做的原因是我们不想在整个功能完成之前触及我们的开发分支,同时,如果需要在开发分支中修复一些错误,我们希望能够应用它们.同时我们希望更新我们的feature-branch如果某些更改(或错误修复)将应用于开发分支。
所以从这种情况
A--B--C--D--I--J--K (develop)
          \
           E--F--G (feature-branch)
                  \
                   H (sub-branch)

我们想要以下
A--B--C--D--I--J--K (develop)
                   \
                    E--F--G (feature-branch)
                           \
                            H (sub-branch)

通常,当从开发创建一个简单的功能分支时,我使用将我的分支重新定位到开发,以移动我的提交并保持历史记录干净。相反,在解释的场景中,我和我的同事正在共享功能分支,并且我们正在从那里创建子分支,所以如何保留 feature-branch与添加到 develop 的新提交保持同步分支?是否可以像我们为本地私有(private)分支机构所做的那样重新设置基准而没有任何副作用?
任何带有 git 命令的示例将不胜感激

提前感谢每一个提示/资源或建议。

最佳答案

首先,“子分支”纯粹是您的概念,在 git 中,所有分支都是平等的,没有跟踪分支如何相互关联(仅在执行诸如查找共同 merge 基础之类的操作时提交如何关联)。

您需要做的就是从 develop merge 进入 feature-branch .

假设其他人已将更改推送到这些分支中的一个或其他(使用 git fetchgit merge remote/branch 可以避免网络往返,但在这里我会保持简单):

git checkout develop
git pull
git checkout feature-branch
git pull
git merge develop
# Resolve any merge issues... which may need an explicit git commit
git push
feature-branch现在是最新的,所有更改都提交给 develop .

如果您在 develop 中只有一些更改你想 merge ,那么你可能需要挑选一些提交。

如果任何主题分支的存在时间超过短期,则可以使用相同的过程来更新主题分支,并将最新 merge 到 feature-branch 中。 .

关于Git:处理子分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380768/

相关文章:

android - 通过 react native 添加 map

git - 如何重命名 GitHub 网站上的目录/文件夹?

git - merge 多个 git 存储库

Git rebase local vs git pull --rebase origin

git 子模块在 git status 中显示为文件

github - 将 github 日志保存到文件

node.js - 将 GitHub 更新部署到 Azure 托管的 DocPad Node.js 网站会使网站脱机 1-2 分钟

具有选定或限制子模块列表的 Git 子模块 foreach

version-control - 如何在 mercurial 的 "hg log"上显示当前的工作修订版?

maven - 未提供 SCM URL 来执行发布