前言

这部分写于寒假,之前学过git一些基本操作,属于学个开始就由于别的事情暂时耽搁了,现在是大三寒假,我决定把它补上。

此处推荐两个网站,一个是git官方的书籍教程,一个是GitHub上比较有名的可视化git教程

Git与GitHub简要

关于GitHub

GitHub作为最大的同性交友网站(雾),**GitHub为开发者提供Git仓库的托管服务,可以让开发者及其相关人员共享代码的场所**。可以暂时通俗理解为代码的仓库。

关于Git

Git属于分散型版本管理系统,是为版本管理而设计的软件

Linux的创始人Linus Torvalds在2005年开发了Git的原型程序,当时是为了更好的维护Linux系统。

关于这里有一个故事:一开始Linux之父是个人在开源做Linux,随着参与项目的人越来越多,Linux项目越来越复杂,Linux之父不得不在代码整理,纠错,审核,检查,发布的过程中耗费大量的时间,这样就严重影响了开发,于使Linux之父使用了当时的版本管理系统,虽然这样解决相关问题,当时由于技术宅的爱好,就把提供Linux之父版本控制厂商研发的版本管理系统给破解研究了,这样就违背了使用该软件的相关原则,于使Linux之父一生气,憋了一个月,开发出来了Git

什么是版本管理

版本就是管理更新的历史记录。它为我们提供了一些在软件开发过程中必不可少的功能,例如记录一款软件添加或者更改源代码的过程,回滚到特定阶段,恢复误删除的文件等。

在Git出现以前,人们普遍采用Subversion(SVN)等集中型版本管理系统,而现在Git已经成为了主流。

集中型与分散型

刚才说到的版本管理系统分为Subversion(SVN)这类集中型的与Git这类分散型的

  • 集中型

    以Subversion为代表的集中型,会将如下图所示的仓库集中存放在服务器之中,所以只存在一个仓库,这就是为什么会被称为集中型。

    image-20220202165523166

    集中型将所有数据集中存放在服务器当中,有便于管理的优点。但是一旦开发者所处的环境不能连接服务器,就无法获取最新的源代码,开发也就几乎无法进行。服务器宕机时也是同样的道理,而且万一服务器故障导致数据消失,恐怕开发者就再也见不到代码了。

  • 分散型

    如下图为GitHub分散型示意图。如图中所示,GitHub将仓库Fork给了每一个用户。Fork就是将GitHub的某个特定仓库复制到自己的账户下。Fork出的仓库与原仓库是两个不同的仓库,开发者可以随意编辑。

    image-20220202171024187

    分散型拥有多个仓库,相对而言稍显复杂。不过,由于本地的开发环境中就有仓库,所以开发者不必远程连接仓库就可以进行开发。

集中型和分散型哪个更好?

各有优缺点,根据具体情况而定,不存在绝对的“好”。

GitHub与Git的区别

GitHub与Git完全是两个东西。在Git中,开发者将源代码存放进“Git仓库”的资料库中并加以使用和操作。而GitHub则是网络上提供Git仓库的一项服务。

也就是说,GitHub上公开的软件源代码全部都由Git进行管理,所以理解Git,是熟练运用GitHub的关键。

开始Git与GitHub之旅

安装Git

  • Mac与Linux

    无Mac系统,自行百度,Linux都以软件包(Package)的形式提供了,可以直接使用。

  • Windows

    百度Git查找官网下载,或者点击这里Git官网,然后选择Windows平台,或者直接在这里下载msysGit,这两个是一个软件,选择一个合适的位数,下载,完成后双击运行,按照引导安装即可。

    说明:我使用的Git版本是2.32.0.windows.2,也是文章各种Git代码示例的演示版本

    1. 双击运行,选择下一步(Next)

      image-20220202213937370
    2. 选择安装位置,点击Next

      image-20220202214123824
    3. 根据需要选择相应组件,或者直接默认即可,点击Next

      image-20220202214851363
    4. 选择Win菜单中Git相关文件目录,无需求的可以选择默认,点击Next

      image-20220202215753488

      如果选择默认,则在开始菜单中可以找到git相关文件如下图:

      image-20220202215946572
    5. 选择Git默认编辑器,无特殊需求默认即可,有特殊需求的需要另行安装编辑器,并在安装时指定编辑器,并配置相关环境变量。默认则直接点击Next即可。

      image-20220202220139702
    6. 选择初始化仓库的主干名称,默认为第一项,即让Git选择,名称为master,未来可能会改名。第二项是我们可以自定义名称,下面附注的翻译为:很多团队已经重命名他们的默认主干名,常见的选择为 main,trunk 以及 development,你可以修改你的主干名称为:

      image-20220202220739690
    7. 选择修改Path环境变量,无特殊需求可以直接默认,点击Next即可

      image-20220202221014355 翻译: image-20220202221903449
    8. 选择HTTPS后端传输规则,同理无特殊需求默认即可。

      image-20220202222429285

      关于两个选项的区别可以参考[What’s the difference between OpenSSL and the native windows Secure Channel library]

    9. 末尾换行符的处理,同理无特殊需求,默认即可

      image-20220202222547719

      GitHub中公开的代码大部分都是以Mac或Linux中的LF(Line Feed)换行。然而,由于Windows中是以CRLF(Carriage Return + Line Feed)换行的,所以在非对应的编辑器中将不能正常显示。

      Git可以通过设置自动转换这些换行符。对于使用Windows环境的用户来说,直接选择默认的”Checkout Windows-style,commit Unix-style line endings”选项。换行符在checkout时会自动转换为CRLF,在提交时则会自动转换为LF。

      相关说明:关于CRLF和LF的差异

    10. 配置终端模拟器与Git Bash一起使用,同理无特殊需求默认即可,点击Next。image-20220202225251266

      翻译:

      image-20220202230152589
    11. 选择默认的git pull行为,无特殊需求默认即可,点击Next。

      image-20220202230311097
    12. 选择一个凭证帮助管理,无特殊需求无须配置,点击Next即可。

      image-20220202230538736
    13. 其他配置,无特殊需求默认即可。

      image-20220202230710959

      翻译:

      image-20220202231151069
    14. 实验性功能选项,无特殊需求默认即可,然后选择Install等待安装即可。

      image-20220202231220516
    15. 安装成功后可以通过鼠标右键查看到如下快捷导航:

      image-20220202231356420

Git初始设置

在随便一个位置,右键鼠标,选择Git Bash Here,在之后弹出的程序控制台中进行操作。

  1. Git GUI Here是Git提供的GUI图形化界面,但是用处不大,可以不用考虑
  2. 关于Bash出处由来(点击查看)
  • 设置姓名和邮箱地址

    使用如下代码来设置使用Git时的姓名和邮箱地址,名称使用英文输入。

    1
    2
    3
    4
    5
    6
    7
    #设置名称和邮箱地址
    git config --global user.name "你自定义的名称"
    git config --global user.email "你的邮箱地址"

    #查看当前名称和邮箱地址
    git config user.name
    git config user.email

    运行结果示例:

    image-20220202233416626

    这里设置的姓名和邮箱地址会用在Git的提交日志中。由于GitHub上公开仓库时,这里的姓名和邮箱也会随着提交日志一同被公开,所以注意不要使用隐私信息

  • 提高命令输出的可读性

    可以通过将color.ui设置为auto来让命令的输出有更高的可读性。代码示例:

    1
    git config --global color.ui auto

GitHub的相关准备

访问GitHub网页,或者单击这里,进行GitHub的相关准备。

image-20220202234926203
  • 创建账户

    进入如下类似界面创建账户,需要注意的是Username设置好后,个人公开页面URL即(httpss://github.com/+username),其他项目根据提示完成填写并创建账户。

    image-20220202235255910
  • 设置头像

    在GitHub上随处可见的头像是通过Gravatar服务显示的。使用过WordPress的玩家可能会对它有所了解。

    当然现在,可以直接点击我的头像,进入设置,上传自定义头像。

    image-20220203000017875
  • 设置SSH Key

    GitHub上链接已有仓库时的认证,是通过SSH公开密钥认证方式进行的。现在需要来创建公开密钥认证所需要的SSH Key,并将其添加到GitHub上。运行下面的命令来创建SSH Key:

    1
    ssh-keygen -t rsa -C "这里添你的邮箱" 

    输入后会弹出一行提醒:

    1
    2
    Enter file in which to save the key (/c/Users/电脑用户文件夹/.ssh/id_rsa):
    #这里是告诉你SSH key保存在哪个路径下,只需要按下回车确认就可以

    剩下的如下图所示,根据提示设置密码:

    image-20220203122043906

    需要注意的是,密码输入后会不显示在控制台上,所以不要误认为控制台失灵了

    设置成功会弹出如下提醒:

    image-20220203124607435

    同样的,你可以在它保存的路径下找到相关公钥和密钥文件:

    image-20220203123240917

    关于SSH密钥的官方说明

  • 在GitHub上添加公开密钥

    在GitHub上添加公开密钥,今后就可以使用私有密钥进行认证了。

    进入GitHub网站,登录你的账户,单击头像,选择Settings(设置)

    image-20220203123809744

    进入设置页面,在左栏找到SSH and GPG keys,单击进入,在SSH keys栏选择New SSH keys(创建新的公钥)

    image-20220203124044881

    Title部分可以自定义,Key需要填写公钥文件里的内容,可以通过找到路径文件,选择以记事本格式打开,或者通过下面的命令来查看:

    1
    cat ~/.ssh/id_rsa.pub
    image-20220203124502974

    点击添加,输入密码二次确认,添加成功后,可以在SSH keys栏看到刚刚添加的公钥,并且创建账户时所用的邮箱也会收到一封“公钥添加完成”的邮件提醒。

    image-20220203124944367

    在添加完成后,现在可以尝试使用手中的私钥与GitHub进行认证和通信了。命令示例:

    1
    ssh -T git@github.com

    出现如下提示,则表示连接成功。

    image-20220203125551594

    同理,这里输入密码,也是不可见的

  • 使用社区功能

    你可以通过Follow来关注某人,这样一来,你关注的对象(用户)的活动就会在你的控制面板中显示出来,你可以看到该用户在GitHub上做了什么,可以通俗理解为微博关注了某人,某人的动态你就可以看到了。

    image-20220203130013684

GitHub实操上手

  • 创建仓库

    在GitHub右上角,点击加号,选择New repository来创建新仓库。

    image-20220203132232745
    1. Repository template(存储库模板)

      可以选择自定义存储卡模板,无特殊需求可以不用管。

    2. Repository name(仓库名称)

      为你创建的仓库自定义一个名称。

    3. Description(仓库描述)

      为你仓库添加一个描述,可以为空

    4. Public/Private(仓库类型)

      仓库的类型,Public或者Private

      • Public:公开/公有,即别人可以看到你的代码
      • Private:私有,即别人看不到,只有自己或者授权的人才可以访问

      私有仓库收费的,不过被微软爸爸收购后,可以免费提供最多3人协助私有仓库支持。

      目前示例,创建公有即可

    5. Initializa this repository with(初始化命令/文件)

      • **Add a README file(创建一个ReadMe文件)**:即仓库创建后,里面附带一个ReadMe文件。

        ReadMe文件本质是一个记事本,不过其后缀为.md,如果熟悉Markdown的会了解这个文件,一般用来说明仓库包含软件的概要,使用流程,许可协议等信息,可以理解为仓库的说明文档,即使用手册和相关说明。

        关于Markdown语法格式及其相关教程可以点击这里浅谈MarkDown基础

      • **Add .gitignore(创建.gitignore文件)**:即仓库创建后,附带.gitignore文件。

        这个我没用过,以下内容出自作者: [日] 大塚弘记的《GitHub入门与实践》

        这个设定会帮我们把不需要在Git仓库中进行版本管理的文件记录在.gitignore文件中,省去了每次根据框架进行设置的麻烦,选择后下拉菜单包含主要的语言及框架,选择今后将要使用的即可。

      • **Add a license(创建许可协议文件)**:即仓库创建后,附带LICENSE协议文件。

        选择后,可以根据下拉菜单来选择许可协议,仓库创建后会自动生成许可协议的LICENSE文件,用来表明仓库的许可协议。

    6. 全部选择完成后,点击创建即可创建一个新的仓库。

    image-20220203132947022
  • 仓库初始页面

    如下为创建的新仓库页面示例:

    image-20220203140859991

    我们可以通过示例连接来Clone仓库,或者其他方式

    1
    httpss://github.com/L-Seraphine/Test.git
    • ReadMe:可以看到我们在ReadMe中的内容会被直接显示在仓库的最下面,所以一般会在该文件中注明仓库包含的文件说明,使用说明,许可协议,支持等信息。可以使用普通文本,或者使用Markdown语法实现其他效果,来提高可读性。

    • **GitHub Flavored Markdown(GitHub 风格的 Markdown)**:在GitHub上进行交流时使用的Issue,评论,Wiki等都可以使用Markdown语法表述。准确的来说是GitHub Flavored Markdown(GFM)语法,该语法是在Markdown语法的基础上扩充来的,一般情况下,使用原本的Markdown语法即可。

      关于GFM语法的官方文档说明

  • 使用Git对仓库的基本操作

    • Clone仓库

      选择一个要克隆的文件夹,对着空白处右键,选择Git Bash here,然后在控制台输入如下命令:

      1
      git clone 这里是仓库的地址

      仓库地址可以在GitHub SSH选项下复制:

      image-20220203142932527

      然后输入设置密钥时的密码即可Clone该仓库到指定的本地文件夹:

      image-20220203143317515
    • 编写代码

      现在在Clone的本地文件夹下,创建文件1.txt,随便写些内容。例如:

      1
      123

      然后通过输入以下命令来查看文件状态:

      1
      git status
      image-20220203151755689
    • 提交

      然后将1.txt提交到仓库,这样,这个文件就进入了版本管理系统的管理之下。今后的更改管理都交给Git进行。命令示例:

      1
      git add 1.txt

      通过git add命令将文件加入暂存区,再通过git commit命令提交。

      1
      git commit -m "update 1.txt"

      添加成功后可以使用git log命令来查看提交日志。

    • 进行Push

      之后只需要执行push命令,就可以将GitHub上的仓库进行更新。命令示例:

      1
      git push
      image-20220203152218078

      这样一来,我们更新的操作就会在GitHub上面公开了。

      image-20220203152310838

End

这是基本的Git和GitHub的基础和交互基础,对于Git和GitHub连接提交等命令看不懂目前没问题,只需要跟着操作熟悉一下环境和命令即可,后面的部分会详细讲述git相关命令。