zoukankan      html  css  js  c++  java
  • fork 与 branch、clone 的区别

     对于没有使用 git 进行企业级的多人协作的 git 使用者来说,往往认为使用 git 进行代码仓的操作的过程中,fork 得到的结果就相当于一个新的 branch,但实际上,这是完全不同的概念。另外,也有人分不清 fork 与 clone 的区别,笔者也在此一并解释一下。

    fork
      fork 的原意是“叉子”,一种西方人的餐具(西方人很喜欢使用与饮食相关的内容来命名),这相当于中国人的筷子。对于一个菜,大家可以使用筷子一起吃,因此,fork 是一种实现多人协作的方式。

      fork 只能对代码仓进行操作,且 fork 不属于 git 的命令,它是远程代码仓托管平台的一种“操作”,一般还是该平台网站上的一个可点击的文字,在点击该文字之后就可以触发 fork 操作。对于远程的原代码仓,使用 fork 之后,得到的是该远程仓的一个副本,但其(副本仓)的所有人变成了使用的 fork 的人(为了简化描述,下面假设使用的 fork 的人是你)。之所以说 fork 得到的代码仓的所有者变成了你,是因为该仓的 clone 中的 URL 变成了关于你的 URL,而原代码仓的 clone 中的 URL 是关于该原代码仓所有者的 URL。在这个意义下,fork 相当于对代码仓的“copy”。但是,对原代码仓使用 fork 得到的副本仓,远程代码仓管理网站会保留副本仓与原代码之间的一种“联系”。这种“联系”并不是它们之间的同步更新,因为这种同步更新的技术是不可能实现的,原因是多人协作提交的代码有可能引起冲突。这种“联系”只是标记此副本仓是从原代码仓中使用 fork 得到的,这对以后将进行的从副本仓到原代码仓的代码合入提供了可能。

    branch
      branch 的原意是“分支”。这很好理解,这意味着新 branch 是为原 branch 提供了一种新的开发方向。

      branch 只能对某一分支(branch)或提交(commit)进行操作,它是 git 的一种命令,操作结果是建立一个新分支。然后使用 checkout 到新分支之后,以后提交将建立一个与原分支相对独立的一个提交记录。这些特征好像与 fork 很类似,但 fork 得到的是一个新的、自己的代码仓,而 branch 得到的是一个自己的代码仓的一个新分支,两者在概念上大相径庭。

    clone
      clone 的一词容易让人望文生义。有人说它就是“copy”,但实际上它的含义更接近“download”,而 fork 更接近于“copy”。

      clone 是 git 的一种命令,它的作用是将文件从远程代码仓下载到本地,从而形成一个本地代码仓,而这个远程代码仓可以是自己的远程代码仓,也可以是他人的,只要能获取该代码仓关于命令 clone 的 URL 即可。clone 与 fork 的区别在于,fork 是将远程别人的代码仓,创建一个自己的远程副本,而 clone 是将远程的某个代码仓,创建一个自己的本地副本,而这“某个代码仓”可以是远程自己的代码仓,也可以是他人的。
    ————————————————
    版权声明:本文为CSDN博主「秘境奇才」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wangpaiblog/article/details/115879464

    声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作
  • 相关阅读:
    玩机分享之群晖利用反代域名访问
    Clipboard.SetText()卡住问题
    KB4040973 KB3178034 补丁导致wpf无法启动异常
    WPF 启动缓慢问题
    Jetbrains系列产品2019.2.3最新激活方法
    .net 4.0 以下HttpWebRequest Header 修改hosts方法
    Crypto++ 无法解析的外部符号 CryptoPP::AssignIntToInteger
    关于WDK开发内核签名之WHQL签名认证流程简介
    ico制作工具
    VUE监听滚动条事件
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/15353503.html
Copyright © 2011-2022 走看看