Git如何将本地仓库变基到指定远程分支的特定提交
操作实现方案
1. 修正添加远程仓库的命令
你之前写的添加远程的命令参数顺序有误,-t 参数后必须紧跟要追踪的分支名,不能将 -f 参数插在 -t 和分支名之间,否则Git会把-f识别为待追踪的分支名导致执行报错。正确命令如下:
git remote add -f -t {New_Remote_Branch} New_Remote {Repo}
参数说明:
-f:添加远程仓库后立即执行fetch拉取指定分支的提交-t {New_Remote_Branch}:指定只追踪该远程下的对应分支,不会拉取其他分支内容New_Remote:本地配置的远程仓库别名{Repo}:远程仓库的地址
执行完这一步,你指定的远程分支所有提交(包括你要变基到的特定提交)都已经拉取到本地。Git中commit ID是全局唯一标识,不需要额外加远程名前缀就能定位,可以先执行下面的命令查看分支提交列表,确认你要的目标commit ID:
git log New_Remote/{New_Remote_Branch} --oneline
2. 正确的变基命令语法
你推测的命令参数顺序完全写反了,git rebase --onto 的标准语法为:
git rebase --onto <目标基底提交> <变基起始边界> [待变基分支]
如果当前你已经checkout到需要执行变基的本地分支,要把该分支上所有从New_Remote/{New_Remote_Branch}分叉后产生的本地提交,整体迁移到你指定的远程分支特定提交上,直接执行:
git rebase --onto {New_Remote_Branch_Specific_Commit_id} New_Remote/{New_Remote_Branch}
参数逻辑说明:
--onto后面紧跟的就是你要落脚的目标提交,也就是你找到的那个特定commit ID- 后面跟的
New_Remote/{New_Remote_Branch}是变基的起始边界:Git会把这个边界点之后、到当前分支HEAD为止的所有本地提交,逐个摘下来重新应用到前面指定的目标提交上 - 最后一个待变基分支参数省略时,默认对当前检出的分支执行操作
注意事项
- 变基过程如果出现冲突,先手动解决冲突文件,执行
git add <冲突文件路径>标记冲突已解决,再执行git rebase --continue即可继续变基流程;如果要放弃本次变基回到操作前状态,执行git rebase --abort即可 - commit ID不需要写全,只要输入前几位短ID、能和其他提交唯一区分就可以正常识别
内容的提问来源于stack exchange,提问作者wyt
相关产品推荐
相关产品推荐

