Git中的fork,clone和branch

fork

fork,英语翻译过来就是叉子,动词形式则是分叉,如下图,从左到右,一条直线变成多条直线

在这里插入图片描述
转到git仓库中,fork则可以代表分叉、克隆 出一个(仓库的)新拷贝

在这里插入图片描述
包含了原来的仓库(即upstream repository,上游仓库)所有内容,如分支、Tag、提交
如果想将你的修改合并到原项目中时,可以通过的 Pull Request 把你的提交贡献回 原仓库。
那么GitHub中怎么样fork别人的代码到自己仓库并进行贡献
场景:
比如说现在有一个很牛逼的项目,我们进入项目地址,想将这个项目复制到自己的github仓库,然后你还想将仓库中的代码拉取到本地进行修改,修改完你还要将本地的修改后的代码推送到自己的github仓库,更甚至你还想将自己复制过来并修改后的代码再还给原作者,请求人家让你合并。
在这里插入图片描述
进入厉害的项目的地址,即他人的仓库中的项目,然后右边有个fork按钮。点击这个按钮,稍等片刻后,就会在自己的账号下克隆了一个一模一样的项目,包括文件、提交历史、issues等。
在这里插入图片描述
fork完别人的代码后,自己的账号下也有了这个项目,然后将其clone到自己的电脑,通过git clone 命令
在这里插入图片描述
在这里插入图片描述
接下来就可以对这个项目进行修改了,但是不建议在master分支上直接修改,最好是在master分支基础上切出一个dev分支,然后在dev分支上修改,修改完成后,再将dev分支merge到master分支。
首先切出dev分支
在这里插入图片描述
这个时候我们可以进行一些修改进行测试,比如添加一个b.b的文件
在这里插入图片描述
将b.b进行add并提交修改,然后再切换回来master分支,最后将dev分支与master分支合并
在这里插入图片描述
在自己的电脑上修改好代码后,再使用git push命令将改动同步到自己的Github仓库中
在这里插入图片描述
通过这个操作就可以在代码中看到自己的提交了。
到此,你就完成了克隆别人的代码,并且对代码进行了修改操作,你还可以向原作者提交你的代码。
点击自己的仓库中的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 checkout可以切换到另一个testing分支
在这里插入图片描述

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值