你真的了解git嗎?

2021-09-24 06:56:06 字數 2125 閱讀 8174

看了幾遍廖雪峰的git教程和阮一峰的git教程之後,覺得自己使用git已經是得心應手了,腦中也構建出了一副關於git操作的影象。

學習乙個新東西的時候我總是喜歡把知識形象化出乙個圖譜在腦中,這樣記憶的更加深刻。

但是隨著使用的深入,我發現我腦中的影象與git的實際行為存在出入。

稍微進入一下正題。假如你的倉庫關聯了遠端倉庫,當我們執行>git status時,可能會有如下提示

# 您的分支與origin/master 一致

on branch master

your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean

複製**

當我的隊友commit and push 之後我再次執行>git status,我以為會有如下提示

# 你的分支落後於 origin/master一次提交.並且可以快速合併.執行git pull可以進行快速合併

on branch master

your branch is behind 'origin/master' by 1 commits, and can be fast-forwarded.

(use "git pull" to update your local branch)

nothing to commit, working tree clean

複製**

這是阮一峰大神一篇部落格中看到的git操作示意圖

網上流傳的大部分資料都類似這樣

通過這幅圖,我理所當然的認為在隊友push之後,我執行git status命令會提示your branch is behind我相信很多人都是這麼認為的。

但實際產生的行為是前者,為什麼會出現這樣的情況? 這就是我的問題。 再抽象一下這個問題,就是git status 是對哪兩個倉庫進行的比較?

我們分析一下提示語句your branch is behind 'origin/master'。不難看出是master分支和origin/master進行的比較

按照上面的示意圖,也就是 remote(origin/master)和repository進行了乙個比較。但是這與實際情不符。

於是經過簡單的測試,我腦海中又重新構建出乙份git示意圖。

git addgit commit通過這兩條命令繪製出如下影象

這張圖是我根據git命令的一些行為得到,非權威。和上面阮一峰的示意圖相比,本地增加了乙個 origin/master。

再稍微介紹幾個命令

該命令沒有在圖上體現,其是一條復合命令

git pull = git fetch + git merge origin/master 

複製**

git fetch操作將remote同步到本地的origin/master

git merge origin/master 將 origin的master分支 合併到 倉庫的master分支。

這條命令我沒法確切的理解。我的猜測是, git push操作是將local的master push到了local的origin/master git檢測到origin變化之後,進行了乙個origin到remote的同步操作

該命令中對比的兩個倉庫如圖示。通過上圖就能夠解釋,為什麼 隊友提交到remote之後,我執行git status沒有落後提示。至此我上文提到的問題得到了解決。

我認為local和remote之間的行為,用推送和拉取來描述並不那麼優雅。這兩個詞很容易會誤解成,remote是乙個控制中心。

實際上local和remote之間進行的只是簡單的同步操作,無論是示意圖還是我在介紹git fetch和git push都刻意體現出了這種同步。

在我看來,同步這個字眼更能體現git設計的初衷 —— 分布式版本控制。

maxwei.me/posts/do-yo…

你真的了解Java嗎?

三目運算子規則 如果第二個和第三個運算元具有相同的型別,那麼它就是條件表示式的類 型。換句話說,你可以通過繞過混合型別的計算來避免 煩。如果乙個運算元的型別是 t,t 表示 byte short 或 char,而另乙個運算元是乙個 int 型別的常量表示式,它的值是可以用型別 t 表示的,那麼條件表...

你真的了解restful api嗎?

在以前,乙個 的完成總是 all in one 頁面,資料,渲染全部在服務端完成,這樣做的最大的弊端是後期維護,擴充套件極其痛苦,開發人員必須同時具備前後端知識。於是慢慢的後來興起了前後端分離的思想 後端負責資料編造,而前端則負責資料渲染,前端靜態頁面呼叫指定api獲取到有固定格式的資料,再將資料展...

ViewStub你真的了解嗎

目錄介紹如果覺得好,可以star一下,謝謝!當然也歡迎提出建議,萬事起於忽微,量變引起質變!override android view.remotableviewmethod asyncimpl setvisibilityasync public void setvisibility int vis...