面試官:說說 Git 中 fork- clone-branch 這三個概念,有什麼區別?
一、是什麼
fork
fork
,英語翻譯過來就是叉子,動詞形式則是分叉,如下圖,從左到右,一條直線變成多條直線
轉到git
倉庫中,fork
則可以代表分叉、克隆 出一個(倉庫的)新拷貝
包含了原來的倉庫(即 upstream repository,上游倉庫)所有內容,如分支、Tag、提交
如果想將你的修改合併到原項目中時,可以通過的 Pull Request 把你的提交貢獻回 原倉庫
clone
clone
,譯爲克隆,它的作用是將文件從遠程代碼倉下載到本地,從而形成一個本地代碼倉
執行clone
命令後,會在當前目錄下創建一個名爲xxx
的目錄,並在這個目錄下初始化一個 .git
文件夾,然後從中讀取最新版本的文件的拷貝
默認配置下遠程 Git
倉庫中的每一個文件的每一個版本都將被拉取下來
branch
branch
,譯爲分支,其作用簡單而言就是開啓另一個分支, 使用分支意味着你可以把你的工作從開發主線上分離開來,以免影響開發主線
Git
處理分支的方式十分輕量,創建新分支這一操作幾乎能在瞬間完成,並且在不同分支之間的切換操作也是一樣便捷
在我們開發中,默認只有一條master
分支,如下圖所示:
通過git branch
可以創建一個分支,但並不會自動切換到新分支中去
通過git checkout
可以切換到另一個testing
分支
二、如何使用
fork
當你在github
發現感興趣開源項目的時候,可以通過點擊github
倉庫中右上角fork
標識的按鈕,如下圖:
點擊這個操作後會將這個倉庫的文件、提交歷史、issues 和其餘東西的倉庫複製到自己的github
倉庫中,而你本地倉庫是不會存在任何更改
然後你就可以通過git clone
對你這個複製的遠程倉庫進行克隆
後續更改任何東西都可以在本地完成,如git add
、git commit
一系列的操作,然後通過push
命令推到自己的遠程倉庫
如果希望對方接受你的修改,可以通過發送pull requests
給對方,如果對方接受。則會將你的修改內容更新到倉庫中
整體流程如下圖:
clone
在github
中,開源項目右側存在code
按鈕,點擊後則會顯示開源項目url
信息,如下圖所示:
通過git clone xxx
則能完成遠程項目的下載
branch
可通過git branch
進行查看當前的分支狀態,
如果給了--list
,或者沒有非選項參數,現有的分支將被列出;當前的分支將以綠色突出顯示,並標有星號
以及通過git branch
創建一個新的分支出來
三、區別
其三者區別如下:
-
fork 只能對代碼倉進行操作,且 fork 不屬於 git 的命令,通常用於代碼倉託管平臺的一種 “操作”
-
clone 是 git 的一種命令,它的作用是將文件從遠程代碼倉下載到本地,從而形成一個本地代碼倉
-
branch 特徵與 fork 很類似,fork 得到的是一個新的、自己的代碼倉,而 branch 得到的是一個代碼倉的一個新分支
參考文獻
-
https://git-scm.com/book/zh/v2/Git - 基礎 - 獲取 - Git - 倉庫
-
https://git-scm.com/book/zh/v2/Git - 分支 - 分支簡介
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/UtBO1pLJ9JqVmjEsNQMtlg