SVN转Git后,如何让本地文件夹Git仓库等效于远程克隆?
正确的Git初始化与远程仓库对齐步骤
你的问题根源在于先创建了本地临时提交,导致本地Git历史和远程GitHub仓库的历史完全独立,后续拉取时不得不进行无关历史合并,最终在MR中带出多余提交。要让本地仓库表现得如同直接克隆远程,需跳过本地临时提交,直接对接远程历史,操作如下:
- 确保本地SVN工作副本是最新状态(执行
svn update同步最新代码) - 进入本地SVN工作目录,初始化Git仓库但不做任何提交:
cd local_svn_working_copy git init . - 添加远程GitHub仓库地址:
git remote add origin git@github:<你的仓库路径>.git - 拉取远程仓库的历史记录,并创建与远程对齐的本地主分支:
(如果本地工作区文件与远程main分支有差异,确认是SVN同步后的正常内容,可执行git fetch origin git checkout -b main origin/maingit reset --hard origin/main强制对齐,执行前请确保未保存的本地修改已备份)
完成以上操作后,本地Git仓库的历史会完全继承远程GitHub的记录,和直接克隆的仓库完全一致。后续创建新分支开发时:
git checkout -b new-branch # 进行代码修改 git add . git commit -m "你的修改描述" git push origin new-branch
此时发起的合并请求中,只会包含你在new-branch上的本地修改提交,不会出现多余的临时提交和合并提交。
额外注意:因为要同时保持SVN和Git追踪,后续每次代码修改后,需同步提交到SVN和Git(例如先提交到SVN,再将相同修改提交到Git),确保两个版本控制系统的代码状态一致。
内容的提问来源于stack exchange,提问作者hardhypochondria
相关产品推荐
相关产品推荐

