Git rebase保留所有功能分支(假设它们没有真正的冲突)

时间:2015-10-28 19:59:55

标签: git

我有masterfeature个分支。我只是想将master重新定义为feature ..我已经确定任何更改或冲突都应该自动解析为使用feature(没有人正在编辑这些文件而我做了在主人身上没有任何功能变化。)

过去这对我有用:

git checkout master
git pull
git checkout feature
git rebase master
git rebase --skip
git rebase --skip # until the REBASE N/M is done
git pull

同样,我知道我没有踩到来自master的任何编辑,我们处理单独的文件。基本上这工作一次。我已经对feature做了更多的提交并再次尝试了。除了最后一步git pull ..

之外,其他所有工作都是一样的

结果git pull给我留下了很多CONFLICT文件,这些文件都与我自己的更改有关,并且所有自动解析(只保留功能分支!)...

如果我从头开始(git reset --hard origin/feature),那么改为运行git merge master我最终得到的内容似乎是相同数量的CONFLICT文件(其中很多都有很多变化)。我宁愿保留HEAD并忽略冲突的主要部分。手动编辑所有这些文件需要20分钟,我需要在需要更新功能分支时重复...

如何在不编辑每个文件并修复每个冲突的情况下解决这些冲突(或避免它们)?

我不确定如何避免混乱,轻松管理它的一种方法如下:使用git merge保留下面的命令脚本,同时了解可能导致的任何提交更复杂的冲突:

function git-resolve-by-branch() {
    git checkout ${1?branch} ${2?file} && git add ${2?file}
}

1 个答案:

答案 0 :(得分:0)

最好在与创建要素分支的同一分支上完成rebase。正如rebase实际做的那样:

  • 存储您所做的更改
  • 更新您的功能分支,就好像它只是创建
  • 一样
  • 分支
  • 上应用您的更改

图片顶部显示

  • 结帐,创建分支功能
  • 然后您将 a b 更改为功能分支
  • 然后完成提取,并且 c 即将进入

下半部分

  • rebase已完成,显示 c 的更改,来自 master ,原始更改 a b 好像就在哪里

enter image description here

因此,如果在不同的分支上完成rebase,则功能分支的所有更改都将转移到新的feater分支。这可能非常棘手,因为完成rebase的分支可能与原始分支完全不同,用于创建功能分支。

何时合并

开发发生在功能分支上。每次新提交都在分支上完成,可以通过应用 rebase 将它们安全地添加到功能分支。 在功能分支上完成开发后,切换到分支,然后功能分支合并到主服务器。