前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git使用教程-学会参加开源项目

Git使用教程-学会参加开源项目

作者头像
20岁爱吃必胜客
发布2022-11-13 10:18:13
4000
发布2022-11-13 10:18:13
举报
文章被收录于专栏:进步集

文章目录

🍃博主昵称:一拳必胜客 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门–计算机考研 🍑创作初心:本博客的初心是每天分享记录自己学习的脚步,和各位技术友探讨交流,同时给同样感兴趣的朋友以参考; 博主研究方向:渗透测试、嵌入式、机器学习; 🌸博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ; ‘’ 特别鸣谢:木芯工作室 、Ivan from Russia



🍃基础认识

  1. 是什么?

Github 简明教程 分类 编程技术 如果你是一枚Coder,但是你不知道Github,那么我觉的你就不是一个菜鸟级别的Coder,因为你压根不是真正Coder,你只是一个Code搬运工。 但是你如果已经在读这篇文章了,我觉的你已经知道Github了。 正是Github,让社会化编程成为现实。

  1. github是一个基于git代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。
  2. Git 配置 Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。

这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。

~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。

当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

在 Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings$USER。

此外,Git 还会尝试找寻 /etc/gitconfig 文件,只不过看当初 Git 装在什么目录,就以此作为根目录来定位。

用户信息 配置个人的用户名称和电子邮件地址:

代码语言:javascript
复制
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

git个人仓库建立

使用方法 使用当前目录作为 Git 仓库,我们只需使它初始化。

git init 该命令执行完后会在当前目录生成一个 .git 目录。

使用我们指定目录作为Git仓库。 git init newrepo 初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。

如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

代码语言:javascript
复制
$ git add *.c
$ git add README
$ git commit -m '初始化项目版本'

以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。

注: 在 Linux 系统中,commit 信息使用单引号 ',Windows 系统,commit 信息使用双引号 "。

所以在 git bash 中 git commit -m ‘提交说明’ 这样是可以的,在 Windows 命令行中就要使用双引号 git commit -m “提交说明”。

🍑多说无益,如何参与开源项目?

在这里插入图片描述
在这里插入图片描述

gitee参与项目过程:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  1. 打开gitee,我们以这个iot项目为例。
  2. 从 master 分支 checkout 一个新分支(注:请务必保证 master 代码是最新的)
  3. 新分支命名格式:docs/username_description,例如:docs/pnoker_新增mqtt使用说明
  4. 在新分支上编辑文档、代码,并提交代码
  5. 最后 PR 合并到 develop 分支,等待作者合并即可----------就是pull request

github参与项目过程:

在这里插入图片描述
在这里插入图片描述

点Fork,就会在自己的账号下克隆一个bootstrap仓库。然后从自己的账号下克隆,这里就必须要使用git工具了,输入git指令: git clone https://github.com/blizzawang/bootstrap.git 复制代码 注意一定要从自己的账号下clone仓库,这样你才能推送修改,如果从bootstrap作者的仓库地址克隆,因为没有权限,你将不能推送修改,除非作者将你列为该仓库的协作者,但显然这是不可能的。 Bootstrap的官方仓库twbs/bootstrap、你在GitHub上克隆的仓库my/bootstrap,以及你自己克隆到本地电脑的仓库,他们的关系就像下图显示的那样:

在这里插入图片描述
在这里插入图片描述

如果你想修复bootstrap的一个bug,或者新增一个功能,立刻就可以开始干活,干完后,往自己的仓库推送。 如果你希望bootstrap的官方库能接受你的修改,你就可以在GitHub上发起一个pull request。当然,对方是否接受你的pull request就不一定了。

自己作为开源项目发起人

我们知道,git拥有极其强大的克隆和分支功能,在团队协作中,你自己作为团队项目的主干,其它成员就各自有一条分支,每个人都在自己的分支上工作,互不影响,这样能最高效地开发项目。当每个人的项目功能都完成后,就是合并代码的时候了,所有人的代码都合并完成并没有发生错误,整个项目就完成了。那么,在Github中,该如何合并代码呢? 还是以上面创建的仓库为例,这里我做了一些操作,使用git工具将仓库clone到了桌面上,我们叫它本地仓库,然后在本地仓库新建了一个分支,模拟第二个程序员进行的操作,第二个程序员创建了一个test2文件,然后通过git工具推送到了Github仓库里。

在这里插入图片描述
在这里插入图片描述

现在我们可以看到,它提示一分钟前user2分支有推送,然后我们点击Compare&pullrequest进行比较和拉取请求。

在这里插入图片描述
在这里插入图片描述

会发现,这些分支能够自动合并,是因为当前两个分支的内容互不冲突,这样我们可以在下面填写一些关于此次合并的说明,然后点击Create pull request进行合并。

在这里插入图片描述
在这里插入图片描述

继续点击Merge pull request。

在这里插入图片描述
在这里插入图片描述

点击Commit进行提交。我们回到仓库主页,发现user2的文件成功进来了。

在这里插入图片描述
在这里插入图片描述

而当你的提交和其它人的提交产生了冲突,比如同时创建了一个变量,亦或是同时修改了某个文件的公共部分,此时就无法自动合并,这样,你得通过git工具将他人的代码更新到自己的本地仓库,然后在本地将冲突解决,再推送到Github,其他人再对自己的代码进行更新即可。 援引链接

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 🍃基础认识
    • git个人仓库建立
    • 🍑多说无益,如何参与开源项目?
      • gitee参与项目过程:
        • github参与项目过程:
          • 自己作为开源项目发起人
          相关产品与服务
          代码托管
          CODING 代码托管(CODING Code Repositories,CODING-CR)是为开发者打造的云端便捷代码管理工具,旨在为更多的开发者带去便捷、高效的开发体验,全面支持 Git/SVN 代码托管,包括代码评审、分支管理、超大仓库等功能。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档