fork 与 branch、clone 的区别
fork 與 branch、clone 的區(qū)別
- fork
- branch
- clone
??對于沒有使用 git 進行企業(yè)級的多人協作的 git 使用者來說,往往認為使用 git 進行代碼倉的操作的過程中,fork 得到的結果就相當于一個新的 branch,但實際上,這是完全不同的概念。另外,也有人分不清 fork 與 clone 的區(qū)別,筆者也在此一并解釋一下。
fork
??fork 的原意是“叉子”,一種西方人的餐具(西方人很喜歡使用與飲食相關的內容來命名),這相當于中國人的筷子。對于一個菜,大家可以使用筷子一起吃,因此,fork 是一種實現多人協作的方式。
??fork 只能對代碼倉進行操作,且 fork 不屬于 git 的命令,它是遠程代碼倉托管平臺的一種“操作”,一般還是該平臺網站上的一個可點擊的文字,在點擊該文字之后就可以觸發(fā) fork 操作。對于遠程的原代碼倉,使用 fork 之后,得到的是該遠程倉的一個副本,但其(副本倉)的所有人變成了使用的 fork 的人(為了簡化描述,下面假設使用的 fork 的人是你)。之所以說 fork 得到的代碼倉的所有者變成了你,是因為該倉的 clone 中的 URL 變成了關于你的 URL,而原代碼倉的 clone 中的 URL 是關于該原代碼倉所有者的 URL。在這個意義下,fork 相當于對代碼倉的“copy”。但是,對原代碼倉使用 fork 得到的副本倉,遠程代碼倉管理網站會保留副本倉與原代碼之間的一種“聯系”。這種“聯系”并不是它們之間的同步更新,因為這種同步更新的技術是不可能實現的,原因是多人協作提交的代碼有可能引起沖突。這種“聯系”只是標記此副本倉是從原代碼倉中使用 fork 得到的,這對以后將進行的從副本倉到原代碼倉的代碼合入提供了可能。
branch
??branch 的原意是“分支”。這很好理解,這意味著新 branch 是為原 branch 提供了一種新的開發(fā)方向。
??branch 只能對某一分支(branch)或提交(commit)進行操作,它是 git 的一種命令,操作結果是建立一個新分支。然后使用 checkout 到新分支之后,以后提交將建立一個與原分支相對獨立的一個提交記錄。這些特征好像與 fork 很類似,但 fork 得到的是一個新的、自己的代碼倉,而 branch 得到的是一個自己的代碼倉的一個新分支,兩者在概念上大相徑庭。
clone
??clone 的一詞容易讓人望文生義。有人說它就是“copy”,但實際上它的含義更接近“download”,而 fork 更接近于“copy”。
??clone 是 git 的一種命令,它的作用是將文件從遠程代碼倉下載到本地,從而形成一個本地代碼倉,而這個遠程代碼倉可以是自己的遠程代碼倉,也可以是他人的,只要能獲取該代碼倉關于命令 clone 的 URL 即可。clone 與 fork 的區(qū)別在于,fork 是將遠程別人的代碼倉,創(chuàng)建一個自己的遠程副本,而 clone 是將遠程的某個代碼倉,創(chuàng)建一個自己的本地副本,而這“某個代碼倉”可以是遠程自己的代碼倉,也可以是他人的。
總結
以上是生活随笔為你收集整理的fork 与 branch、clone 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不使用 Maven 等构建工具,而使用原
- 下一篇: 解决IntelliJ IDEA报错Fai