聲明:碼字不易,轉載請註明出處,歡迎文章下方討論交流。 Git 經常使用命令速查表
最近在一個學習小組裏學習AI的課程,咱們全部的學習資料和homework都放在gitlab上。今天一個小隊友從gitlab上load倉庫的時候問起了這個問題,正好在此總結記錄一下,僅供參考。html
git clone顧名思義就是將其餘倉庫克隆到本地,包括被clone倉庫的版本變化
。舉個例子,你當前目錄比方說是在e:/course/中,此時若想下載遠程倉庫,本地無需git init
,直接git clone url(url是你遠程倉庫的地址,直接複製就能夠了)。執行git clone等待clone結束,e:/course/目錄下自動會有一個.git的隱藏文件夾(若是看不見,請嘗試設置隱藏文件夾可見),由於是clone來的,因此.git文件夾裏存放着與遠程倉庫如出一轍的版本庫記錄。clone操做是一個從無到有的克隆操做,再次強調不須要git init
初始化。git
$ git clone <版本庫的url>
例如克隆TensorFlow:github
$ git clone https://github.com/tensorflow/tensorflow.git
或者使用SSH協議:segmentfault
$ git clone git@github.com:tensorflow/tensorflow.git
這樣就會在本地生成一個目錄,該目錄與遠程倉庫同名。
However,若是本地目錄不想與遠程倉庫同名怎麼辦??也有辦法,將目錄名做爲git clone
命令的第二個參數:安全
$ git clone <版本庫的網址> <本地目錄名>
git pull是拉取遠程分支更新到本地倉庫的操做。好比遠程倉庫裏的學習資料有了新內容,須要把新內容下載下來的時候,就可使用git pull
命令。事實上,git pull是至關於從遠程倉庫獲取最新版本,而後再與本地分支merge(合併)。
即:git pull = git fetch + git merge
服務器
注:git fetch不會進行合併,執行後須要手動執行git merge合併,而git pull拉取遠程分以後直接與本地分支進行合併。更準確地說,git pull是使用給定的參數運行git fetch,並調用git merge將檢索到的分支頭合併到當前分支中。
$ git pull <遠程主機名> <遠程分支名>:<本地分支名>
舉例:將遠程主機origin的master分支拉取過來,與本地的branchtest分支合併。gitlab
$ git pull origin master:branchtest
若是將冒號和後面的branchtest去掉,則表示將遠程origin倉庫的master分支拉取下來與本地當前分支合併。
以上的git pull操做若是用git fetch來表示:學習
$ git fetch origin master:brantest $ git merge brantest
相比起來,git fetch
更安全也更符合實際要求,由於能夠在merge前,咱們能夠查看更新狀況,根據實際狀況再決定是否合併。fetch
理解 fetch 的關鍵, 是理解 FETCH_HEAD,FETCH_HEAD指的是: 某個branch在服務器上的最新狀態’。這個列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行對應於遠程服務器的一個分支。
當前分支指向的FETCH_HEAD, 就是這個文件第一行對應的那個分支.
通常來講, 存在兩種狀況:url
# 方法一 $ git fetch origin master #從遠程的origin倉庫的master分支下載代碼到本地的origin maste $ git log -p master.. origin/master #比較本地的倉庫和遠程參考的區別 $ git merge origin/master #把遠程下載下來的代碼合併到本地倉庫,遠程的和本地的合併
# 方法二 $ git fetch origin master:temp #從遠程的origin倉庫的master分支下載到本地並新建一個分支temp $ git diff temp #比較master分支和temp分支的不一樣 $ git merge temp #合併temp分支到master分支 $ git branch -d temp #刪除temp
碼字不易,如對您有幫助,歡迎點贊收藏打賞^_^
原文地址:https://segmentfault.com/a/1190000017030384