日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

git pull --rebase PK git pull

發(fā)布時(shí)間:2024/1/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git pull --rebase PK git pull 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在使用git的日常開(kāi)發(fā)過(guò)程中,經(jīng)常遇到如下情況:

1、某個(gè)時(shí)間你通過(guò)git clone/git fetch拉取了遠(yuǎn)程倉(cāng)庫(kù)代碼到本地倉(cāng)庫(kù)

2、開(kāi)始本地調(diào)試并開(kāi)發(fā)某個(gè)功能,經(jīng)過(guò)幾天的奮斗,終于功能調(diào)試好了

3、當(dāng)你開(kāi)心地準(zhǔn)備通過(guò)git push分享你的成果時(shí),遇到git push失敗,提示本地代碼非最新,需要先更新本地代碼

原來(lái)在你調(diào)試過(guò)程中,有人“偷偷地”提交了代碼,導(dǎo)致出現(xiàn)類似下面所示的情況:

說(shuō)明如下:

1、o/master為遠(yuǎn)程分支,master:本地跟蹤分支

2、c0、c1是從遠(yuǎn)程倉(cāng)庫(kù)取到本地的,故o/master指向c1

3、c2代表別人提交的代碼,c3是你準(zhǔn)備git push的本地提交

4、左邊實(shí)線圓圈是本地倉(cāng)庫(kù),右邊虛線圓圈是遠(yuǎn)程倉(cāng)庫(kù)

這時(shí)你是不是覺(jué)得一時(shí)無(wú)從下手呢?是否會(huì)抱怨別人不厚道?

別怕,git早就想到了,而且給出了兩種不同的解決方案呢^_^

第一種:git pull --rebase

git pull --rebase可能一時(shí)不容易理解,這里先賣個(gè)關(guān)子,先看下如下操作:

git fetchgit rebase o/master

其中:

git fetch會(huì)基于c1,從遠(yuǎn)程倉(cāng)庫(kù)中拉取c2到本地,然后更新o/master指向c2

git rebase o/master, 這是一個(gè)變基操作,首先將master變基到o/master,這樣就會(huì)在o/master分支上多了一個(gè)c3'(c3的副本),再將master指向c3', 具體效果如下圖所示:

這樣再git push即可,且push之后遠(yuǎn)程倉(cāng)庫(kù)結(jié)果如下:

?第二種:git pull

git pull 一般不建議直接使用,因?yàn)樵撁钔鶗?huì)產(chǎn)生意想不到的后果,讓你后悔不已,我們盡量使用下面兩個(gè)命令來(lái)代替:

git fetchgit merge o/master

其中:

git fetch效果同上

git merge o/master, 這是一個(gè)合并操作,與變基操作不同,git只會(huì)新創(chuàng)建一個(gè)節(jié)點(diǎn)c4,然后使c2和c3同時(shí)作為c4的父節(jié)點(diǎn),然后使master指向c4,具體效果如下:

這時(shí)再git push即可,但是push之后遠(yuǎn)程倉(cāng)庫(kù)結(jié)果如下:

?你是不是覺(jué)得很驚訝呢?很可能和你預(yù)想的效果不同吧?所以盡量使用git pull --rebase,這樣可以使遠(yuǎn)程倉(cāng)庫(kù)提交歷史更清爽。?

本文參考git闖關(guān)游戲:Learn Git Branching

總結(jié)

以上是生活随笔為你收集整理的git pull --rebase PK git pull的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。