能否从一个repo克隆特定commit至另一已有开发的repo并设为新master?
操作完全可行,且不会损坏两个原仓库
以下是具体操作步骤,全程仅在第二个仓库本地执行,绝对不会影响第一个仓库的内容:
先把第二个仓库的现有改动全部提交,避免操作中丢失代码:
git add . git commit -m "暂存现有开发内容"临时将第一个仓库添加为第二个仓库的远程源(用完就删除,不会留下长期关联):
git remote add temp-first-repo <第一个仓库的Git地址>拉取第一个仓库的所有提交记录(仅本地拉取,不会修改当前分支内容):
git fetch temp-first-repo基于目标特定commit创建新分支,这个分支就以第一个仓库的指定commit为起点:
git checkout -b new-master <目标commit的哈希值>把第二个仓库原master分支的现有开发内容合并到这个新分支,保留你的原有代码:
git merge master若合并时出现冲突,手动解决冲突后提交即可。
让第二个仓库的master分支切换到这个新分支的状态:
git checkout master git reset --hard new-master移除临时添加的第一个仓库远程源,彻底切断与第一个仓库的关联:
git remote remove temp-first-repo如果第二个仓库有远程托管(比如GitHub/GitLab),需要强制推送更新master分支(注意:强制推送会覆盖远程的master分支,提前和团队成员沟通好,或者先备份远程分支):
git push -f origin master
完成后,第二个仓库的master就以第一个仓库的指定commit为开发起点,同时保留了你之前的开发内容,后续所有开发都和第一个仓库完全无关,不会对它造成任何影响。
内容的提问来源于stack exchange,提问作者paduchele007
相关产品推荐
相关产品推荐

