问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Git中的fork、clone和branch详解

创作时间:
作者:
@小白创作中心

Git中的fork、clone和branch详解

引用
CSDN
1.
https://blog.csdn.net/ChenYiRan123456/article/details/136657257

在软件开发中,Git是一个非常重要的版本控制系统,而fork、clone和branch是Git中常用的操作。本文将详细介绍这些概念及其使用方法,帮助读者更好地理解和使用Git。

fork

fork,英语翻译过来就是叉子,动词形式则是分叉,如下图,从左到右,一条直线变成多条直线。转到Git仓库中,fork则可以代表分叉、克隆出一个(仓库的)新拷贝。

包含了原来的仓库(即upstream repository,上游仓库)所有内容,如分支、Tag、提交。如果你想将你的修改合并到原项目中时,可以通过的 Pull Request 把你的提交贡献回原仓库。

如何在GitHub中fork别人的代码到自己仓库并进行贡献

场景:比如说现在有一个很牛逼的项目,我们进入项目地址,想将这个项目复制到自己的GitHub仓库,然后你还想将仓库中的代码拉取到本地进行修改,修改完你还要将本地的修改后的代码推送到自己的GitHub仓库,更甚至你还想将自己复制过来并修改后的代码再还给原作者,请求人家让你合并。

  1. 进入厉害的项目的地址,即他人的仓库中的项目,然后右边有个fork按钮。点击这个按钮,稍等片刻后,就会在自己的账号下克隆了一个一模一样的项目,包括文件、提交历史、issues等。

  2. fork完别人的代码后,自己的账号下也有了这个项目,然后将其clone到自己的电脑,通过git clone命令。

  3. 接下来就可以对这个项目进行修改了,但是不建议在master分支上直接修改,最好是在master分支基础上切出一个dev分支,然后在dev分支上修改,修改完成后,再将dev分支merge到master分支。

    首先切出dev分支:

    git branch dev
    git checkout dev
    

    这个时候我们可以进行一些修改进行测试,比如添加一个b.b的文件:

    echo "test" > b.b
    git add b.b
    git commit -m "add b.b file"
    

    将b.b进行add并提交修改,然后再切换回来master分支,最后将dev分支与master分支合并:

    git checkout master
    git merge dev
    
  4. 在自己的电脑上修改好代码后,再使用git push命令将改动同步到自己的GitHub仓库中:

    git push origin master
    

    通过这个操作就可以在代码中看到自己的提交了。

  5. 到此,你就完成了克隆别人的代码,并且对代码进行了修改操作,你还可以向原作者提交你的代码。点击自己的仓库中的pull request下的New pull request,之后GitHub会自动对比原仓库分支与自己仓库分支代码,看看是否有冲突。如果它显示Able to merge的话,就可以点击Create pull request按钮,进行提交。

    点击后会跳到一个可以和原作者说明改动了什么,以及改的原因的页面。然后点击绿色的create pull request即可。这个时候原作者就会收到pull request了。

clone

clone,译为克隆,它的作用是将文件从远程代码仓下载到本地,从而形成一个本地代码仓。执行clone命令后,会在当前目录下创建一个名为xxx的目录,并在这个目录下初始化一个.git文件夹,然后从中读取最新版本的文件的拷贝。默认配置下远程Git仓库中的每一个文件的每一个版本都将被拉取下来。

区别

两种方式最重要的区别是,如果我们修改了clone到本地的代码,想push一下,显然第一种方式不可行,因为项目的远程信息是别人的(通过git remote -v可以查看),而第二种方式,由于创建者相当于是我们自己,是能够push的(当然先要add和commit)。但是我们push之后,原项目的主人是看不到我们修改的代码的,如果想让原作者接受并merge你的修改,这时可以发起pull request,这样原作者就能收到pull request请求,并可以审阅你的代码是否合理,如果他比较满意,就可以merge你的修改,这样原项目就得到了完善,而你也就成为了光荣的“贡献者”之一。

一般情况我们是不需要fork的。很多人错误的在使用fork,把它当成一种“收藏”功能,这其实并没有什么必要。一来,可以直接用“watching”来关注该项目,当有新的issue,commit,pull request时,你会收到相应的邮件提醒(前提是设置了邮箱)。二来fork的项目只是保留了fork当时的状态,如果项目作者在你fork之后更新了项目,你是看不到的。这就带来一个问题:如何实现fork后的项目与原项目的同步?

参考GitHub上的链接:

branch

branch,译为分支,其作用简单而言就是开启另一个分支,使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。Git处理分支的方式十分轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。

在我们开发中,默认只有一条master分支,如下图所示:

通过git branch可以创建一个分支,但并不会自动切换到新分支中去:

git branch testing

通过git checkout可以切换到另一个testing分支:

git checkout testing

或者使用以下命令创建并切换到新分支:

git checkout -b testing
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号