文章目录
- 前言
- 一、分析当前的问题
- 二、修改远程仓库地址
- (一)修改远程仓库地址
- 场景 现有保留远程分支
- 场景替换现有远程分支
- 二、 找回已经提交的文件
- 场景:提交后,代码在本地仓库但未推送
- 三、同步远程分支
- 四、提交到新远程的新分支
前言
在实际的开发中,经常会遇到这样的问题。
拿到新项目是个二开或者是从别的仓库拿到的代码。这个时候自己先写了一部分的功能。
写完代码要提交,发现远程仓库连接地址不对,这个时候已经提交了 git commit -m ''之后的操作。
需要更改远程分支,并将本地分支提交到远程的新分支(本地不存在这个分支)
一、分析当前的问题
- 远程仓库地址不对 - 需要更改新的远程仓库地址
- 本地的代码已经 **git commit ** 提交到本地仓库 - 需要将提交的代码找回来
- 要提交的地址是新远程分支的非默认分支 本地不存在 - 需要与远程同步分支,并将本地提交到需要分支
二、修改远程仓库地址
(一)修改远程仓库地址
当前的远程仓库地址不对,我们要的是B仓库,现在是A。
场景 现有保留远程分支
- 添加新的远程仓库,保留当前远程。假设名字为(newremote)
git remote add newremote <新仓库的URL>
- 将本地分支推送到新远程
git push newremote 本地分支名
- 建立本地分支与新远程分支的追踪关系
git branch -u newremote/远程分支名 本地分支名
场景替换现有远程分支
- 修改现有远程的URL
git remote set-url origin <新仓库的URL>
- 本地分支推送到新仓库
git push origin 本地分支名
二、 找回已经提交的文件
场景:提交后,代码在本地仓库但未推送
代码已经通过 git commit 提交到本地 Git 仓库,但还没有 git push 到远程。
- 查看刚刚提交记录
git log --oneline #查看所有提交的记录
git log --oneline -n 5 # 只显示最近的5条提交
git log --oneline HEAD # 查看当前分支的提交历史
git log --oneline --graph --decorate # 带分支/合并关系的可视化显示
我们也可以通过vscode工具查看,通过刚刚提交的分支,可以看到我们的记录是否存在
只要提交了,代码就安全地存储在 Git 里
- 撤回刚刚的提交记录。这会让代码回到暂存区(git add 状态)。
git reset --soft HEAD~1
或者也可以 直接完全撤回 修改还在,但需要重新 git add
git reset HEAD~1
三、同步远程分支
与远程分支同步
git fetch origin
切换到远程分支(如果报错 先忽略)
git checkout 需要的远程分支名
确认是否已经同步
git branch
这时就可以看到本地已经有两个分支了
四、提交到新远程的新分支
在刚刚的三部操作中,我们已经拿到了代码,拿到了远程分支,只要推送就可以
但是我们的代码在 master里面我们需要先换到 dev再 提交
所以刚刚git checkout 分支 的时候会报错,因为我们代码还在 master(默认)分支里面
我们 将代码暂存
git stash
切换分支(不会报错)
git checkout dev
将暂存的代码取出
git stash pop
提交
git push
大功告成!!