【发布时间】:2019-10-22 14:31:52
【问题描述】:
如果我有一个工作区,看起来像这样:
oliver-koo-C02WC0EJHTDG:foo oliver.koo$ git log --all --decorate --oneline --graph
* f528ce3 (HEAD -> master) someone else made a change
| * 447855b (feature1.2) feature 1.2
| | * f3e4d2f (feature-1.1) create feature 1.1
| |/
| * b04c5c6 (feature-1) create feature 1 core
|/
* 06a8ddb (origin/master, origin/HEAD) Update stuff
每个分支轨道的父分支如下:
oliver-koo-C02WC0EJHTDG:foo oliver.koo$ git branch -vv
feature-1 b04c5c6 [master: ahead 1, behind 1] create feature 1 core
feature-1.1 f3e4d2f [feature-1: ahead 1] create feature 1.1
feature1.2 447855b [feature-1: ahead 1] feature 1.2
* master f528ce3 [origin/master: ahead 1] someone else made a change
有没有办法(甚至可能)将 master 递归合并到所有子分支中,而无需检查每个子分支并执行git merge master?
注意:
- 这个answer 建议使用
git fetch . master:feature-x不起作用,因为这些不是快进合并
oliver-koo-C02WC0EJHTDG:foo oliver.koo$ git fetch . master:feature-x
From .
! [rejected] master -> feature-x (non-fast-forward)
我知道在没有结帐的情况下使用 rebase 可以达到类似的结果 (
git rebase master feature-x)。但我想使用合并。我一直在考虑使用
git cherry-pick A^..B的替代方案,但是否可以在不检查分支的情况下将精选提交应用到分支?
【问题讨论】:
-
不可能。
git merge master将master合并到当前签出的分支,您甚至无法命名要合并到的分支。cherry-pick也是如此。请参阅stackoverflow.com/a/4157106/7976758:“需要检查目标分支才能解决冲突等问题(如果 Git 无法自动合并它们)。” -
@phd 您是否知道是否有文档支持该评论“需要检查目标分支才能解决冲突等问题(如果 Git 无法自动合并它们) 。”
-
简短的回答是否定的;长答案是使用
git worktree add在每个分支上添加额外的工作树,以便您可以检查分支。
标签: git github merge git-merge