當前分支拉取master的操作 git rebase master


 

 

使用場景

以master為准創建分支dev_A 開發,開發過程中,master主分支有新的功能被提交進來,需要將這部分代碼align到dev_A的版本.

這里僅列舉這一個場景,rebase 還可以修改commit message 請參照我的另一篇文章

理解rebase

rebase 字典翻譯為變基。我的理解是:改變基准,以早期的master為基准創建的dev_A,后來master代碼有變,我們需要重新以最新的master為基准同步代碼,可以理解成改變dev_A的基准版本為最新的master,這樣是不是好理解一些呢?

操作步驟

1 git切換至當前開發版本

git checkout dev_A

切換到當前開發版本是,也就是 dev_A

2 list需要變基到的branch,不一定是master

 git branch -a

查看所有分支,根據列表中的branch 基准branch

3 執行rebase變基

git rebase master 

這里以master為基准,如果是其他版本,git rebase branchname

如果dev_A中存在沒有提交的代碼,git會提示:

can't rebase : you have unstaged changes.

Please stash or commit them .

可以根據自己的情況選擇執行stash 或者 commit,這里stash為例:

git stash 

stash暫存本地倉庫,rebase 完成之后再使用 git stash pop 取回這一部分代碼。

如果沒有沖突的情況

比如dev_A做的是A模塊,master 代碼變更進去的是B模塊,也假設沒有其他共同使用的文件

git rebase master 這一句命令就已經完成了我們的rebase操作,我們dev_A 已經包含了master后來更新進去的文件。

存在沖突的情況

這里我們着重說明存在沖突的情況

解決沖突

git 會提示我們有哪些文件沖突,我們可以在代碼編輯器中查看沖突標識符

<<<<<HEAD

HEADcode

=======

Othercode

>>>>>>>>>>

兩個沖突的版本用連續的等號=隔開,便於對比兩個版本代碼,手動修改使用哪個版本的代碼。

標記沖突已解決
git add .

修改完成之后 使用git add . 告訴git 沖突已被全部解決,也可以一個文件一個文件解決之后使用 git add filepath, 這樣比較麻煩

繼續rebase 操作
git rebase --continue 
提交到遠程分支
git pull -f

master的代碼已經被同步到當前本版dev_A的版本庫了。

如果有stash的文件,使用如下命令取回代碼

git stash pop

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM