Git pull命令與fetch命令的區(qū)別
Git pull命令與fetch命令的區(qū)別
今天在公司碰到個問題,公司不使用master分支作為主分支,而使用release分支作為主分支,這就碰到了個問題,也就是當(dāng)clone一個項目下來的時候,如果master跟release分支有沖突,就不能pull了,自己還要解決沖突。
剛下一個項目,也不懂沖突到底怎么回事,也就很難搞了。
這個時候,就不得不提Git的兩個命令,git fetch和git pull
Git中從遠(yuǎn)程的分支獲取最新的版本到本地有這樣2個命令:
Git fetch
git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會自動merge
git fetch origin master git log -p master..origin/master git merge origin/master
以上命令的含義:
首先從遠(yuǎn)程的origin的master主分支下載最新的版本到origin/master分支上
然后比較本地的master分支和origin/master分支的差別
最后進(jìn)行合并
上述過程其實可以用以下更清晰的方式來進(jìn)行:
# 將遠(yuǎn)程release分支拉到本地的releaselocal分支 git fetch origin releaser:releaselocal # 切換到tmp分支 git checkout releaselocal
這樣也就解決了這個問題,之后master分支刪除掉,直接從releaselocal創(chuàng)建master分支,這樣所有的分支都跟遠(yuǎn)端的release分支同步了。
Git pull
git pull:相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地
git pull origin release:release
上述命令其實相當(dāng)于git fetch 和 git merge
這個命令其實不太靠譜,如果本地沒有release分支的話,會自動根據(jù)當(dāng)前分支branch一個release分支,然后來執(zhí)行pull操作,所以不太靠譜
所以我通常的做法是保留本地的master分支不進(jìn)行任何commit,然后通過master分支來進(jìn)行切換,這樣在master分支上是clean的,然后通過之前的命令就不產(chǎn)生沖突了
之后在release分支上進(jìn)行merge操作,安全很多。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
linux No space left on device由索引節(jié)點(inode)爆滿引發(fā)500問題
這篇文章主要介紹了linux No space left on device由索引節(jié)點(inode)爆滿引發(fā)500問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11如何使用win10內(nèi)置的linux系統(tǒng)啟動spring-boot項目
這篇文章主要介紹了如何使用​win10內(nèi)置的linux系統(tǒng)啟動spring-boot項目,需要的朋友可以參考下2020-07-07linux socket通訊獲取本地的源端口號的實現(xiàn)方法
這篇文章主要介紹了linux socket通訊獲取本地的源端口號的相關(guān)資料,需要的朋友可以參考下2017-09-09使用apachetop實時監(jiān)控日志、動態(tài)分析服務(wù)器運行狀態(tài)
這篇文章主要介紹了使用apachetop實時監(jiān)控日志、動態(tài)分析服務(wù)器運行狀態(tài),通過apachetop這個工具可以動態(tài)的查看apache的日志文件,還可以直觀的看到訪問的每個地址的請求數(shù)、速度及流量等信息,需要的朋友可以參考下2014-06-06Linux服務(wù)器安裝PHP MongoDB擴展的方法
這篇文章主要介紹了Linux服務(wù)器安裝PHP MongoDB擴展的方法,需要的朋友可以參考下2016-11-11