原文地址:学习 Git 玩转 GitHub

博客地址:http://www.extlight.com

一、基本了解

1.1 什么是版本控制系统

版本控制系统是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。

1.2 什么是 Git

Git是一个免费、开源的版本控制软件

1.3 什么是 Github

Github是全球最大的社交编程及代码托管网站

1.4 Git 和 GitHub 的关系

  • Git是版本控制软件
  • Github是项目代码托管的平台,借助git来管理项目代码

1.5 什么要学习 GitHub

  • 学习优秀的开源项目
  • 关注行业前辈了解最新的行业动态

二、使用 GitHub

2.1 目的

借助 GitHub 托管项目代码

2.2 GitHub 中的基本概念

2.2.1 Repository(仓库)

仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库

2.2.2 Watch(关注)

关注项目,当项目更新可以接收到通知

2.2.3 Star(收藏)

收藏项目,方便下次查看

2.2.4 Fork(复制克隆项目)

复制克隆别人的项目到自己的 Github 仓库中,独立存在,任何操作都不会对原先的仓库造成影响。

2.2.5 Issue(问题讨论)

发现代码 bug 时,发起消息与作者讨论

2.2.6 Pull Request(发起请求)

当 fork 仓库,修改仓库的 bug 或 添加新功能后,想同步到原先的仓库时,发起请求给原仓库作者,让其对代码审核与合并。

2.3 注册 GitHub 账号

第一步:登陆官网 GitHub官网,如下图:

第二步:点击首页右上角的 "Sign up",进入如下页面:

填写好信息,点击 "Create an account",来到如下页面:

GitHub已经帮我们设置好默认选项,我们只管点击左下角绿色按钮即可。

当看到下边的界面时,我们就注册好账号了:

2.4 创建仓库/创建新项目

点击上图 "Start a project" 按钮创建项目(仓库)。但是,由于我们刚注册好账号,并没有对邮件地址进行合法校验。所以会出现如下界面:

点击 红色框住的链接,GitHub 会跳转页面且重新发送一封邮件让我们进行对邮箱地址的校验。如图:

笔者使用的是 qq 邮箱,点击右下角提示进入到 qq 邮箱管理界面,如图:

点击 "Verify email address" 连接进行校验,浏览器会打开新标签提示邮箱地址校验成功。

此时,我们点击 "Start a project" 就能真正创建项目了。此时,我们会来到如下界面:

填写好基本信息,点击 "Create a repository",来到仓库管理界面:

根据图中的标注,我们可以根据自己的需求管理仓库。

2.5 开源项目贡献流程

2.5.1 新建Issue

提交使用问题、建议或者想法

2.5.2 Pull Request

  1. fork 项目
  2. 修改自己仓库的项目代码
  3. 新建 pull request
  4. 等待作者操作审核

三、使用 Git

3.1 目的

通过 Git 管理 GitHub 托管项目代码

3.2 下载安装

登陆 https://www.git-scm.com/download/win 下载

安装过程傻瓜化方式(在选择安装时,选择 Git Bash 和 Git GUI ,其余默认选项即可),步骤省略。

3.3 Git 工作原理

对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

由此我们看到 Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区域,以及本地仓库。

每个项目都有一个 Git 目录(如果 git clone 出来的话,就是其中 .git 的目录)。它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。

从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从 Git 目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。

所谓的暂存区域只不过是个简单的文件,一般都放在 Git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。

基本的 Git 工作流程如下:

  • 在工作目录中修改某些文件
  • 对修改后的文件进行快照,然后保存到暂存区域
  • 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

3.4 Git 基本命令

3.4.1 git init

初始化工作目录,在当前目录下会创建一个名为 .git 的隐藏文件夹。

3.4.2 git add

创建或编辑文件后,执行该命令,将文件添加到暂存区

3.4.3 git commit

将暂存区的文件推送到仓库中

3.4.4 git status

列出当前目录所有还没有被 Git 管理的文件和被 Git 管理且被修改但还未提交(git commit)的文件

3.4.5 git fetch

检测远程仓库所有分支

3.4.6 git checkout

切换分支

3.4.7 git branch

查看当前所在分支

3.4.8 git rm

删除仓库中的文件

3.4.9 git clone

克隆远程仓库

3.4.10 git push

同步本地仓库到远程仓库

3.5 Git 管理远程仓库

Git 连接和管理 GitHub 上的文件,为了安全性,需要设置公钥。

之前的步骤我们安装了 Git,打开 Git 安装目录下的 Git Bash ,键入

ssh-keygen -t rsa -C "GitHub邮箱地址"

命令执行后会提示输入信息,我们不用填写,直接回车。最终会在系统 "C:/Users/用户名/.ssh/" 目录中生成 rsa 和 rsa.pub 文件。

打开 rsa.pub 文件复制里边的所有内容。

回到 GitHub 中,按照如下图操作:

最后我们进行测试,在 Git Bash 中键入:

ssh -T git@github.com

如果出现 "Hi xxx! You've successfully authenticated" 字样,说明我们配置成功了。

下边我们模拟场景运用 Git 命令将文件提交到 GitHub 的仓库中。

场景一:非 clone 方式

该场景下,我们没有对远程仓库进行关联,需要手动初始化 .git 文件夹

在 "E:\demo\git\test1"(自定义) 中,使用 Git Bash 或 CMD 键入:

git init

echo "hello world" > test.txt

git add .

git status

git commit -m "first commit"

#添加需要连接的远程仓库地址(关联远程仓库)
git remote add origin git@github.com:bluesky960/test.git git fetch # 切换到 master 分支
git checkout master git branch git push origin master

此时,在 Github 的 test 仓库中会多出 test.txt 文件。

场景二:clone 方式

在 "E:\demo\git\test2"(自定义) 中,使用 Git Bash 或 CMD 键入:

# 执行 clone 操作会在当前目录中创建 .git 文件夹,关联远程仓库
git clone git@github.com:bluesky960/test.git cd test echo "clone hello world" > test2.txt git add . git commit -m "add file" git push

此时,在 Github 的 test 仓库中会多出 test2.txt 文件。

为了防止每次同步文件都需要输入账号和密码,我们需要进特殊配置

打开 Git Bash 窗口,键入:

git config --global user.name "GitHub用户名"

git config --global user.email "GitHub邮箱地址"

踩坑提醒

在执行 "git remote add origin" 命令时,后边跟着是 SSH 类型的仓库地址,否则,在每次 git push 时都要输入账号和密码!

四、参考资料

学习 Git 玩转 GitHub的更多相关文章

  1. Git的使用 -- 用git玩翻github,结尾有惊喜!有惊喜!有惊喜!林妙妙看了说:牛呲呼啦带闪电 (三)(超详解)

    简介 上一篇主要讲解的是Git安装及配置,这一篇就详细的从无到有的来用Git玩翻github. 一.什么是Github Github是全球最大的社交编程及代码托管网站(https://github.c ...

  2. 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳

    学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 9 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第一篇) 入门详解 - 精简归纳 ...

  3. 学会Git玩转GitHub(第二篇) 入门详解 - 精简归纳

    学会Git玩转GitHub(第二篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第二篇) 入门详解 - 精简归纳 ...

  4. 学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳

    学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳 JERRY_Z. ~ 2020 / 10 / 25 转载请注明出处!️ 目录 学会Git玩转GitHub(第三篇) 入门详解 - 精简归纳 ...

  5. 学会Git玩转Github

    1. 了解Git和Github 1.1 什么是Git Git是一个免费.开源的版本控制软件 1.2 什么是版本控制系统 版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况得系统. ...

  6. 1小时学会Git玩转GitHub

    版权声明:原创不易,本文禁止抄袭.转载,侵权必究! 本次教程建议一边阅读一边用电脑实操 目录 一.了解Git和Github 1.1 什么是Git 1.2 什么是版本控制系统 1.3 什么是Github ...

  7. 学会git玩转github,结尾有惊喜!有惊喜!有惊喜!

    一.什么是Github Github是全球最大的社交编程及代码托管网站(https://github.com/). Github可以托管各种git库,并提供一个web界面(用户名.github.io/ ...

  8. 学会Git玩转GitHub全

    我这个笔记是利用HTML5来写的,所以我现附上代码以及并上照片:  当下@future 2019/4/29 19:55:33 <!DOCTYPE html><html> < ...

  9. 学会Git玩转Github笔记(二)——Git使用

    一.Git基本工作流程 Git工作区域 向仓库中添加文件流程 二. Git初始化及仓库创建和操作 基本信息设置 . 设置用户名 git config --global user.name 'itcas ...

随机推荐

  1. C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 06)

    ----------------------------------------- go 并发 // 注解:go 语言天生为程序并发所设计,可以说go的强项就是在cpu并发上的处理. // go 语言 ...

  2. Neutron二层网络服务实现原理

    网络 ​ 网络(network)是一个隔离的二层网段,类似于物理网络世界中的虚拟 LAN (VLAN).更具体来讲,它是为创建它的租户而保留的一个广播域,或者被显式配置为共享网段.端口和子网始终被分配 ...

  3. Caesars Cipher

    让上帝的归上帝,凯撒的归凯撒. 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码. 移位密码也就是密码中的字母会按照指定的数量来做移位. 一个常见的案例就是ROT13密码,字母 ...

  4. jquery动态创建元素 div元素随垂直滚动条位置变化置顶显示

    刚打开页面效果 拖动滑动条之后效果 页面代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  5. div居中和table居中,jQuery获取下拉列表值

    一.div居中 margin-left: auto;margin-right: auto; <div  style="width:960px ; margin-left: auto;m ...

  6. C++高级编程2. 静态动态链接库

    C++高级编程2. 静态动态链接库20131018 1.动态链接库和静态链接库的区别: 静态链接库就是把lib文件中用到的函数代码直接连接进目标程序,程序运行的时候不在需要其他的库文件:动态链接库是把 ...

  7. qt QTableWidget&&QTableView 导出数据到excel

    通常情况下,我们在开发过程中比较常用的方法是将表格的数据到处到excel文件.我也在这个点上头疼了很长时间,不过功夫不负苦心人,最终还是勉强达到效果,为了后面再次用到时不手忙脚乱现在将方法寄存在此,如 ...

  8. Yii2学习笔记:汉化yii,设置表单的描述(属性标签attributeLabels)

    一:汉化框架 框架汉化在这里设置,如果不生效,前台后台的配置文件都设置下应该就可以了 二:汉化表单 汉化表单,直接在模型层设置,例如: 原来的联系我们表单 汉化后: ] 这种汉化在哪里修改呢?其实是设 ...

  9. java中join用法

    今天又把join的用法大概看了一下,其实理解起来,还是比较简单.用个简单的例子说明一下吧. 1.通过下面的例子,可以看到说出结果中首先全部是是Thread-1,之后才会是Thread-2,这是因为在主 ...

  10. dubbo 之filter使用

    1.继承接口com.alibaba.dubbo.rpc.Filter实现public Result invoke(Invoker<?> invoker, Invocation invoca ...