Github与GitKraken的基础使用(一)[学习笔记]

  • Git与Github
  • 使用Github.com
    • 1.仓库(repository)
    • 2.创建一个repo
    • 3.在仓库中添加文件
    • 4. Commit
    • 5. Branch
    • 6. Pull request 与 merge
    • 7.删除仓库
  • 使用GitKraken
    • 1.验证
    • 2.打开仓库
    • 3. 在仓库中修改文件
    • 4.创建与合并branch

Git与Github

Git是一个版本控制软件,而Github
是基于网络的Git仓库。在Github上用户可以分享各种开源的项目。

Git可以记录文件或项目的轨迹,保存着从出生以来做过的各种增删与改进。我们可以使用Git回到项目的任何一个历史时刻查看它的状态。同时,Git是分布式的版本控制软件,参与合作的每一台电脑都是主机。

Github的使用场景大致是多人在线共同完成一个项目。大家可以随时随地查看项目的进度,并且贡献自己的力量。Github为此提供了repo,commit,branch,pull request,merge等机制。本文分别从网页版本(github.com)与被朋友疯狂安利的Gitkraken版本探索其使用方法。小白文章,用以加深自己的记忆与理解,同时也分享给和我一样刚刚起步的小白们 :)当然也欢迎大家来讨论指正。

使用Github.com

1.仓库(repository)

Github里最基础的概念就是仓库(简作repo)了。简单理解,一个repo就是一个项目。里面可以有各种该项目需要的文件,例如图片,文本,代码,视频等。Github上的一些重要操作也是以repo为基本单位的。下面就是一个Github的repo。可见其中只有一个文件:README.md。

2.创建一个repo

首先要注册一个Github账号。然后选择repositories选项卡,点击绿绿的new按钮。

在弹出的页面中输入仓库的名字,描述,并且勾选"Initialize this repository with a README"。名字不要带有空格,虽然不会出现错误提示,Github会自动补充‘-’。公有与私有选项决定了这个仓库是否所有人可见。README.md相当于一个自我介绍,会在仓库中显示出来,方便他人查阅克隆,所以一般默认勾选自动创建README。而下面的两个选项框是Github的忽略规则与许可证明,将在以后的文章里提到。填好相关信息,点击create repository即可创建一个仓库。

3.在仓库中添加文件

创建好仓库的第一件事情肯定是添加文件了。如果是文本或者代码文件,可以直接点击create new file按钮,在新页面中输入文件名,后缀名,以及文件的内容即可。

输入完成,发现下面有一个commit new file的对话框,在框中可以为这次创建文件的行为进行备注。备注完成,点击commit new file按钮即可。

值得注意的是,Github中没有所谓save的字眼。它的“保存工作”是通过commit完成的。commit是承诺的意思,给人一种很庄重的感觉。可能是通过这个字眼,让我们的每一次提交更加仔细与谨慎?

这里我新建了一个叫count_numbers.txt的文本文件,用于后续的实验。如果想导入例如图片文件,则在仓库页面选择upload files,通过拖拽的方式添加,同样,需要commit new file。添加文件后的仓库如下图所示,红色方框即为动作的备注。同时可以发现,整个仓库有2次提交(commit),分别是readme以及count_numbers.txt;1个分支(master branch),后面会提到;1个贡献者(contributor),即我自己。最下方是README.md的内容,为项目的参与者提供基础信息。

4. Commit

上一部分说到了commit,这里拿出来再说一遍,是因为它关系到Github的版本控制。不光在创建文件的时候需要commit,每一次对文件进行修改都需要commit。打开刚刚创建的文件count_numbers.txt,点击铅笔按钮进行编辑。

在文件的末尾加上4与5,并且在commit changes对话框中填写备注“adding 4 and 5”。回到文件浏览界面,点击铅笔按钮左边的History按钮。

可以发现这个文件所有经历过的修改都列了出来,从它出生到现在的版本都在,并且可以访问。最右边红色框标注出的是commit hash(实际要长很多很多),是每一次commit独一无二的标志。总的来说,每次对repo进行修改都需要commit;每一次commit标志了一次版本更新。

5. Branch

分支指的是当前版本的一个可能发展的方向。Github提供的分支功能允许多个人对同一个版本进行不同的编辑。在创建一个repo时,会默认创建出一个master branch,可以称作主线。在使用branch功能时,使用者会获得一个副本,在副本上可以做任意的更改,且不会影响到master branch。在repo主界面点击 branch:master 下拉菜单,输入想要创建的分支的名称,并且点击 create branch 即可。

可以发现,新的分支:editing-numbers下拥有与创建分支时master branch完全相同的文件与内容,是它的一个副本。且在不同的分支下对文件编辑与commit不会影响到其他的分支。

下面对新建的分支进行更改。编辑count_numbers.txt,增加数字6与7。返回到master branch查看,发现并无修改记录。

为了更加清楚直观的查看分支之间的关系,我们可以使用github提供的图像化工具。在repo页面点击Insights选项卡,在左侧的栏目中选择Network,就可以看到当前的Network Graph。

图中可以清晰的看到,黑色的是master branch,蓝色的是创建的editing-numbers branch。其中editing-numbers branch在repo的第三个版本处创建。想查看每个版本的简易信息,只需将鼠标放到相应的节点处。Network Graph形象地展示了分支与分支的关系,对于理解branch有很大的作用。

6. Pull request 与 merge

Branch提出了一个当前版本可能的发展方向,而想要这个方向成为现实,就需要pull request 和 merge。

Pull request 是在新建的branch对master branch的副本进行修改后,发起的请求。它表示:我想要对master branch进行如下的修改。而merge是在master branch审核同意的情况下,将一个pull request合并到master branch中,产生了一个新的版本。举个简单的例子:一家公司有一个项目要完成。一个组里的人都拿到了项目的雏形(master branch),各自去想怎么把项目完成(branches)。每当一个人想好了,他就把自己的想法发出来,供大家或者项目主管讨论审核(pull request)。有很多份想法,有的大家或项目主管觉得可以,就通过了(merge),而不行的就淘汰了。这个过程完成之后,项目就有了新的进展,即新的版本。

创建一个pull request要在repo界面点击branch右边的 new pull request。之后会打开一个比较页面,用于比较两个分支版本的不同。base选择master branch,compare选择想要merge的branch。稍向下拉可以看到两个版本的不同在哪里。其中可能涉及到增加与删除,增加用绿色标注出来,删除用红色标注出来。下图可见6与7是增加的内容,用绿色标注出来。
在该页面填写本次pull request的主题以及详细叙述,点击create pull request即可。

当收到一个pull request的时候,repo界面的pull request选项卡会出现标记。点击打开,可以查看pull request的具体信息。红色框是发起pull request时填写的主题与详细叙述;绿色的框是文件的比较器;黄色框可以对pull request进行merge;黑色框可以对这次的pull request进行评价,或者拒绝。

点击绿绿的merge pull request即可完成merge。回到repo的master branch,发现文件被修改。打开network graph,可以清楚看到merge过程的发生。

7.删除仓库

当一个仓库不想要了,可以在github网页页面将其删除。在repo界面点击Settings选项卡,拉到最下面有一个叫Danger Zone的红色方框,最后一项“Delete this repository”可以删除当前的仓库。因为删除仓库是个危险的举动,所以系统会再三确认,以防误删。

以上就是Github最为基础的操作与使用。其余的将会在之后的文章中提到。

使用GitKraken

虽然网站版本的Github已经很通俗易用,但是其效率以及美观程度没有一些gitclient做得好。GitKraken就是被朋友疯狂安利的一款gitclient。用后感觉挺好上手的,也较为美观。

GitKraken有自己的官网,软件可以在官网上下载,但是速度堪忧,好像要搭梯子。也可以百度一下,资源还是很多的。下载安装完成,一般选择使用github账号登录,然后会跳转到网站,验证通过即可。之后个性化的设置自己填就可以了。

GitKraken的工作方式,我总结的是将一个在线的github仓库克隆到本地进行操作。操作完成之后可以同步到github或者发起pull request。而这一切都建立在与github建立安全连接的基础上,所以第一步要说到的就是验证。

1.验证

进入GitKraken的首选项,有一栏叫做Authentication。点进去选择Github.com。在没有进行验证之前,应该是下面这个样子。点击绿色的connect to github按钮。

经过漫长的等待,会跳转到一个验证网站,点击continue authorization即可。回来之后会发现页面变成了下面这个样子,然后点击绿色的按钮,再经过漫长的等待,就ok了,成功建立ssh连接。

2.打开仓库

在GitKraken最最上面一栏找到一个文件夹的符号。这里提供了打开仓库的几种方式。其中Open是打开本地已有的或者最近打开的仓库。Clone是克隆一个仓库(也就是复制到本地)。这里可以选择使用url克隆,也可以选择从Github.com直接克隆,因为我们之前已经建立了ssh连接。其中使用url克隆就是去github.com网站找到要克隆的repo,然后点击绿色的clone or download按钮,在弹出来的对话框中复制url粘贴到此即可。这个太麻烦,可以直接使用GitHub.com克隆。

在Clone选项下选择GitHub.com(前提是与github建立了ssh连接),填写本地存储目录,之后选择要克隆的仓库,这里选择的是上面使用的hello-world仓库。点击clone the repo!按钮,等待读条即可。

打开刚刚克隆到的仓库,发现GitKraken的出界面大致分为3块。黑色的是导航块(自己起的),local是本地拥有的branch,remote是远端打开的repo。可见远端的repo有两条branch,而本地打开的是master branch。在红色框中双击editing-numbers即可打开editing-numbers branch。红色框相当于github.com的network graph,记录了版本的变更,比network graph更生动。以下也称这块区域为network graph。绿色框是每一个版本的详细信息,包括名称以及含有的文件。

除了这种打开方式,还有一种叫init。这个可以在本地或者github云端创建一个repo。方法与从网站创建无异,这里不再赘述。

3. 在仓库中修改文件

注意到仓库中的文件显示在上面图绿色框的右下半部分。在这里右键可以选择create file来新建文件。同时也可以单击现有文件进行修改。注意这里与网站不同的地方是,网站每修改一个文件,就要进行commit,而GitKraken提供了一个缓冲区域,可以将多个修改的文件放进去,进行一次commit。

在network graph中选择一个版本(最新的版本),点击要修改的文件,count_numbers.txt,加上8与9。使用快捷键ctrl+s进行保存,发现右边出现了unstaged file和staged file。其中unstaged file中放的是未确认的修改文件,staged file中放的是已确认的修改文件,即准备提交的修改文件。当count_numbers.txt的修改确认完毕后,鼠标移向他并点击stage file按钮,即可将其移动到staged file栏目下。staged file栏目可以放很多文件,在commit message中填写对本次commit action的描述,点击commit changes即可。

在commit之后,network graph发生了下面的变化,出现了两个master branch。仔细观察可以发现,最上面的master branch右边是一个电脑的图标,而下面的是我的github头像图标。这说明在本地,master branch被修改掉了,而github上还是原来的样子。通过看绿色框的1↑符号也可得知,本地的master branch比remote端领先了一个commit。同理1↓则表示本地的branch比remote端落后了一个commit。editing-numbers branch右边两个图标都有,说明这个branch在本地与github是同步的。这个也不难理解,我只是在本地对master branch进行了一次commit,还没有同步到github而已。

那么怎么同步到github呢?只需点击工具栏中的push按钮即可。注意在push之前,确定当前选择的是正确的branch(使用双击切换branch)。点击之后下边的master branch消失了,去github.com查看发现文件被修改掉了。

有的时候remote端已经发生了变化,而本地库还是旧的版本。这种情况点击工具栏pull右边的下拉菜单,选择fetch all即可查看remote端与本地的差别。在需要升级到remote端的情况下,点击pull按钮即可。

4.创建与合并branch

在GitKraken中创建branch很简单,任选一个版本右键,在菜单中选择create branch here,输入branch name即可。同样这个branch是在本地的,没有push的情况下是不会更新到remote端的。合并branch时,与在github.com上略有不同。在本地合并branch时,不需要pull request,直接将要合并的分支拖拽到master branch上,在弹出的菜单栏中选择merge xxx into xxx即可。如果此时点击push按钮,这个merge action在github上也会生效。

但是这样的做法未免过于暴力,在merge之前还是提出来让大家看看比较好。使用GitKraken也可以创建pull request。在左边栏目中remote下有一个pull request选项,点击右边的➕可以创建pull request。

填写好title与description,还可以添加reviewers(将会review这个pull request的人)以及labels(这个pull request的分类),点击create pull request即可。这个pull request可以在github.com上看到以及处理。

以上就是GitKraken的基础应用

Github与GitKraken的基础使用(一)[学习笔记]相关推荐

  1. 【PM学习笔记】酸梅干超人 - 零基础学Figma学习笔记

    原视频链接: B站视频 零基础学Figma学习笔记 心得体会 第1课 - 苹果商店页设计 第2课 - 线性图标设计 第3课 - 面性图标设计 第4课 玻璃拟态页设计 第5课 样式组件功能入门 第6课 ...

  2. Unity开发基础——使用字符串学习笔记

    蓝鸥Unity开发基础使用字符串学习笔记 本节内容:使用字符串:字符串拼接.转义字符 一.字符串拼接:字符串可以使用+或+=进行字符串拼接!! using System; namespace Less ...

  3. AI Studio 飞桨 零基础入门深度学习笔记6.3-手写数字识别之数据处理

    AI Studio 飞桨 零基础入门深度学习笔记6.3-手写数字识别之数据处理) 概述 前提条件 读入数据并划分数据集 扩展阅读:为什么学术界的模型总在不断精进呢? 训练样本乱序.生成批次数据 校验数 ...

  4. AI Studio 飞桨 零基础入门深度学习笔记1-深度学习的定义

    AI Studio 飞桨 零基础入门深度学习-笔记 人工智能.机器学习.深度学习的关系 机器学习 机器学习的实现 机器学习的方法论 案例:牛顿第二定律 确定模型参数 模型结构介绍 深度学习 神经网络的 ...

  5. 韩顺平 2021零基础学Java 学习笔记

    韩顺平 2021零基础学Java 学习笔记(1)(自用)_丨shallow丨的博客-CSDN博客_韩顺平java笔记 韩顺平 2021零基础学Java 学习笔记(2)(自用)_丨shallow丨的博客 ...

  6. AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍

    AI Studio 飞桨 零基础入门深度学习笔记4-飞桨开源深度学习平台介绍 深度学习框架 深度学习框架优势 深度学习框架设计思路 飞桨开源深度学习平台 飞桨开源深度学习平台全景 框架和全流程工具 模 ...

  7. JAVA基础与高级学习笔记

    JAVA基础与高级学习笔记 /记录java基础与高级,除了较简单的内容,没有必要记录的没有记录外,其余的都记录了/ java初学者看这一篇就够了,全文 6万+ 字. JAVA基础 java会出现内存溢 ...

  8. 零基础学前端之HTML全套基础教程【学习笔记】

    [前端总路线学习笔记] 文章目录 HTML全套基础教程[学习笔记] 1.系统结构 2.软件环境准备 3.HTML概述 4. 我的第一个HTML 5. HTML的基本标签 6.HTML的实体符号 7. ...

  9. Docker基础下(学习笔记)

    5. Docker 容器数据卷 5.1 容器数据卷是什么 先来看看Docker的理念: 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的. 容器之间希望有可 ...

最新文章

  1. java 协程 实现 Akka
  2. 音频处理中频域转时域的恢复
  3. ZendStudio导入一个已有的网站
  4. Go 语言编程 — net/http — HTTP 客户端
  5. winsever 2008 r2 管理员账号没有权限_钉钉管理员攻略—主管理员①
  6. 单机版五子棋java功能_java实现单机版和网络对战版五子棋程序
  7. php strstartwith,PHP8新增的三个字符串函数 str_contains, str_starts_with, str_ends_with
  8. jQuery-对Radio/CheckBox的操作集合
  9. VHDL编码器和译码器的设计
  10. AtCoder3950 [AGC022E] Median Replace(DFA + dp)
  11. setitimer用法说明
  12. Java运行时,指定程序文件的编码
  13. 工业机器人技术试题_《工业机器人技术基础》课程试卷A卷 参考答案
  14. android模拟器无法上局域网,模拟器无法上网解决方法
  15. python中五个一行输出_python 如何将一系列数字十个一行输出
  16. Failed installing 'Tomcat6' service
  17. 搞笑决战水源之巅收藏六 师傅
  18. canvas实现涂鸦效果--橡皮檫和历史记录
  19. 给生活来一次傅立叶转换
  20. 苹果系统手机调用java线程出错_在多线程Java应用程序中调用已编译的m-file(.jar)时出错...

热门文章

  1. oracle数据回流,页面的回流与重绘
  2. 米拓模板:软件信息公司网站模板推荐
  3. Unity3D贝塞尔曲线公式 2021-03-24
  4. 一键导出PostgreSQL数据库表设计为word文档
  5. 怎么给拍摄好的视频添加视频或图片背景
  6. day16力扣383赎金信
  7. 企业上网行为管理软件能为企业带来哪些好处?
  8. gcc 生成动态链接库
  9. Calico网络策略
  10. 高能计算机在线计算,飞腾国产整机/国产化工控机/高能计算机GA-A3203工控整机...