目标:基于分支fpdrelease,合并分支develop上的menueditConfig.js
目前分支合并仅支持git merge,直接会合并该分支,这并不符合合并某个文件的需求。查阅资料后发现可采用以下几种方式。
1. 直接覆盖类型
git checkout [branch] [filePath] [filePath]
branch
可为本地或远程分支path
应为文件的全路径,可空格后多个文件一起合并
举例:
git checkout origin/develop src/main/resources/static/df/fap/config/menueditConfig/menueditConfig.js
使用情景:确保两个分支代码保持同步,develop会直接覆盖fpdrelease上的该文件
2.检查不同可自己手动替换类型
git checkout -p [branch] [filePath] [filePath]
举例:
git checkout -p origin/develop src/main/resources/static/df/fap/config/menueditConfig/menueditConfig.js
会显示几个选项
y - apply this hunk to index and worktree # 应用当前hook
n - do not apply this hunk to index and worktree # 放弃当前hook
q - quit; do not apply this hunk or any of the remaining ones # 不使用任何hook,直接退出
a - apply this hunk and all later hunks in the file # 在当前文件下应用此hook以及后续的所有hook
d - do not apply this hunk or any of the later hunks in the file # 在当前文件下不应用此hook以及后续的所有hook
g - select a hunk to go to # 选择一个hook
/ - search for a hunk matching the given regex # 使用正则搜索hook
j - leave this hunk undecided, see next undecided hunk # 先跳过当前hook,并跳转到下一个未处理hook
J - leave this hunk undecided, see next hunk # 先跳过当前hook,并跳转到下一个hook
k - leave this hunk undecided, see previous undecided hunk # 先跳过当前hook,并跳转到上一个未处理hook
K - leave this hunk undecided, see previous hunk # 先跳过当前hook,并跳转到上一个hook
s - split the current hunk into smaller hunks # 切割当前hook
e - manually edit the current hunk # 编辑当前hook
? - print help # 显示帮助信息
使用场景:fpdrelease与develop代码本身有差别,更希望完全由自己手动去合并
3. 中间分支作为桥梁
基于fpdrelease新建分支
git checkout -b fpdrelease_tmp
git checkout origin/develop src/main/resources/static/df/fap/config/menueditConfig/menueditConfig.js
git commit -m '覆盖当前menueditConfig.js代码'
切回fpdrelease分支,并合并fpdrelease_tmp分支,合并完成后,删除临时分支
git checkout fpdrelease
git merge fpdrelease_tmp
git branch -d fpdrelease_tmp
使用场景:以合并分支的方式进行merge
补充:merge有很多种方法,还可以直接merge某次commit,或者使用git cherry-pick
去处理,根据自己的业务需求再决定如何去做。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。