我有master
和feature
个分支。我只是想将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}
}
答案 0 :(得分:0)
最好在与创建要素分支的同一分支上完成rebase。正如rebase实际做的那样:
图片顶部显示
下半部分
因此,如果在不同的分支上完成rebase,则功能分支的所有更改都将转移到新的feater分支。这可能非常棘手,因为完成rebase的分支可能与原始分支完全不同,用于创建功能分支。
何时合并
开发发生在功能分支上。每次新提交都在主分支上完成,可以通过应用 rebase 将它们安全地添加到功能分支。 在功能分支上完成开发后,切换到主分支,然后将功能分支合并到主服务器。