面試官:說說 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 addgit commit一系列的操作,然後通過push命令推到自己的遠程倉庫

如果希望對方接受你的修改,可以通過發送pull requests給對方,如果對方接受。則會將你的修改內容更新到倉庫中

整體流程如下圖:

clone

github中,開源項目右側存在code按鈕,點擊後則會顯示開源項目url信息,如下圖所示:

通過git clone xxx則能完成遠程項目的下載

branch

可通過git branch進行查看當前的分支狀態,

如果給了--list,或者沒有非選項參數,現有的分支將被列出;當前的分支將以綠色突出顯示,並標有星號

以及通過git branch創建一個新的分支出來

三、區別

其三者區別如下:

參考文獻

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/UtBO1pLJ9JqVmjEsNQMtlg