文章目錄
- 前言
- 一、分析當前的問題
- 二、修改遠程倉庫地址
- (一)修改遠程倉庫地址
- 場景 現有保留遠程分支
- 場景替換現有遠程分支
- 二、 找回已經提交的文件
- 場景:提交后,代碼在本地倉庫但未推送
- 三、同步遠程分支
- 四、提交到新遠程的新分支
前言
在實際的開發中,經常會遇到這樣的問題。
拿到新項目是個二開或者是從別的倉庫拿到的代碼。這個時候自己先寫了一部分的功能。
寫完代碼要提交,發現遠程倉庫連接地址不對,這個時候已經提交了 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
大功告成!!