我已经尝试了将近一天来找出处理这种情况的最佳方法,但是即使我发现并理解了很多关于 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 fetch
和 git 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/