zl程序教程

您现在的位置是:首页 >  工具

当前栏目

读书笔记《GitHub入门与实践》大塚弘记

GitHub入门 实践 读书笔记
2023-09-14 09:15:04 时间

        虽说是2015的书,但是大体和现在出入不是特别大,读了之后给人的非常系统的感觉。作者把一本入门级的技术使用说明的清楚明白,简单易懂。

一、github和git

1、什么是GitHub

        GitHub是为开发者提供Git仓库的托管服务。这是一个让开发者与朋友、同事、同学及陌生人共享代码的完美场所。GitHub除提供Git仓库的托管服务外,还为开发者或团队提供了一系列功能,帮助其高效率、高品质地进行代码编写。

2、GitHub与Git的区别

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

        也就是说,GitHub上公开的软件源代码全都由Git进行管理。理解Git,是熟练运用GitHub的关键所在。Git的相关知识,我们将在第2章中为您详细讲解。

3、使用GitHub能带来那些变化

        协作形式变化、在开发者之间引发化学反应的Pull Request、对特定用户进行评论、GitHub Flavored Markdown、能看到更多其他团队的软件、与开源软件相同的开发模式、社会化编程,能同时关注人与代码,是GitHub为我们带来的一个新的世界。

4、GitHub提供的主要功能

        Git仓库、Organization、Issue、Wiki、Pull Request、 Projects等。

5、创建GitHub账户

        请科学上网,然后登录GitHub注册一个账户先。

二、git软件的选择和安装

        Git仓库管理功能是GitHub的核心。因此,使用GitHub之前必须先掌握Git的相关知识,同时本地的设备还要安装Git的环境。

1、软件选择

        Git工具有很多,命令行、GUI、IDE集成等等(GitHub for Desktop、Source Tree、TortoiseGit(只针对windows)、Xcode、Visual Studio)。

        我这里选择了Git-2.34.0-64-bit.exe,GUI版本选择了Source Tree。

        安装就是基本一路下一步就好。

2、初始设置

        首先来设置使用Git时的姓名和邮箱地址,不设置后面也会被强迫设置。

git config --global user.name "aaa"
git config --global user.email "aaa@gmail.com"

三、实际动手使用

1、设置SSH Key

        进入命令行输入下面的命令,邮箱替换成注册GitHub时候的邮箱,密码也要记住,后面会用。

         输入密码后会显示如下:

        id_rsa文件是私有密钥,id_rsa.pub是公开密钥。

2、添加公开密钥 

        在GitHub中添加公开密钥,今后就可以用私有密钥进行认证了。点击右上角的账户设定按钮(Account Settings),选择SSH Keys菜单后,就会出现如图3.2的界面。点击Add SSH Key,会出现Title和Key两个输入框。在Title中输入适当的密钥名称。Key部分请粘贴id_rsa.pub文件里的内容。

        添加成功之后,创建账户时所用的邮箱会接到一封提示“公共密钥添加完成”的邮件。

        完成以上设置后,就可以用手中的私人密钥与GitHub进行认证和通信了。让我们来实际试一试。

        出现如下结果即为成功。如果不成功请优先检查科学上网的环境,其它可能性不太大。 

 3、创建仓库

        实际创建一个公开的仓库。点击右上角工具栏里的New repository图标,创建新的仓库。添加相关信息创建即可。

 4、Clone仓库

        上一步创建完仓库之后,会看到git@github.com:usernname/你的仓库,这样的一个地址。在命令行界面定位到一个满意的磁盘位置运行如下git clone ‘git地址’,命令就会把仓库克隆到本地,空的仓库也可以。

        这里会要求输入GitHub上设置的公开密钥的密码。认证成功后,仓库便会被clone至仓库名后的目录中。将想要公开的代码提交至这个仓库再push到GitHub的仓库中,代码便会被公开(如果你的仓库是public的)。

 5、写代码并提交到本地仓库

        在上一步已经clone完成之后,再对应文件夹内创建一个代码文件,比如hello_world.php文件,用来输出“Hello World! ”。

        由于hello_word.php还没有添加至Git仓库,所以显示为Untracked files。

         将hello_word.php提交至仓库。这样一来,这个文件就进入了版本管理系统的管理之下。今后的更改管理都交由Git进行。

         上图进行add之后,又进行了commit。之后可以通过git log命令查看提交日志。

 6、push到远程仓库

        之后只要执行push, GitHub上的仓库就会被更新,如果push不成功通常都是网络问题,请再次确保科学上网的环境。

7、其它说明 

        如果是先再本地创建仓库,大致流程如下:

        1、git init——初始化仓库,该写代码写代码,该干嘛干嘛。

        2、如果需要关联到远程仓库,则先在GitHub上创建一个仓库,并将其设置为本地仓库的远程仓库。在GitHub上创建的仓库路径为“git@github.com:用户名 /git-tutorial.git”。现在我们用git remote add命令将它设置成本地仓库的远程仓库。

         按照上述格式执行git remote add命令之后,Git会自动将git@github.com:github-book/git-tutorial.git远程仓库的名称设置为origin(标识符)。

        3、如果想将当前分支下本地仓库中的内容推送给远程仓库,需要用到git push命令。现在假定我们在master分支下进行操作。

        像这样执行git push命令,当前分支的内容就会被推送给远程仓库origin的master分支。-u参数可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream(上游)。添加了这个参数,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin的master分支获取内容,省去了另外添加参数的麻烦。

        执行该操作后,当前本地仓库master分支的内容将会被推送到GitHub的远程仓库中。在GitHub上也可以确认远程master分支的内容和本地master分支相同。 

 四、GUI版本的使用

        这里使用了Sourcetree,安装完成之后,界面大致如下,首先再工具-》选项-》一般内找到SSH客户端,切换到OpenSSH,会自动寻找我们创建的私钥。

        GUI版本就一目了然了,提交就是提交到本地仓库,拉取和推送都是针对远端仓库的,还有其它等均可视化,也有命令行模式。

         下面链接是安装Git软件时自带的GUI的使用教程,这个GUI界面略显简陋。

Git可视化极简易教程 — Git GUI使用方法 | 菜鸟教程前言 之前一直想一篇这样的东西,因为最初接触时,我也认真看了廖雪峰的教程,但是似乎我觉得讲得有点多,而且还是会给我带来很多多余且重复的操作负担,所以我希望能压缩一下它在我工作中的成本,但是搜索了一下并没有找到满意的教程,新的一年自己梳理一下自己的经验。 可能男生们大神比较多,觉得Git是如此简单,便已觉得命令行操作就是SO EASY,甚至或许有看不起可视化这样面对低端用户的心理,好的,那您就当我是水货可以右上角了。 我一直觉得类似..https://www.runoob.com/w3cnote/git-gui-window.html

五、书中的其它内容

1、git的更详细操作

        比如分支的创建、显示分支、分支的提交、回溯历史版本、比较功能等等

2、GitHub功能的详述

        个人信息、仓库、公开活动、统计等等,类似网站地图说明

3、尝试Pull Request和接收Pull Request

        主要介绍了如何尝试和接收的具体操作步骤和流程。

4、与GitHub相互协作的工具及服务

        hub命令、Travis CI、Coveralls、Gemnasium、Code Climate、Jenkins等。

5、使用GitHub的开发流程

        主要介绍了GitHub Flow——以部署为中心的开发模式。

6、将GitHub应用到企业

        列举了优势和劣势。

六、常见问题

1、忽略某些文件的方法

        在.git 同级目录下创建.gitignore,需要注意的如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交。参考下面链接。

github忽略文件及文件夹方法_yptsqc的博客-CSDN博客_github忽略文件夹使用.gitignore在.git 同级目录下创建.gitignore*.a # 忽略所有 .a 结尾的文件!lib.a # 但 lib.a 除外/TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODObuild # 忽略 build目录, 及下面的文件当然如果已经push了怎么办?当然也有解决方法,如下:有时候在项目开发过...https://blog.csdn.net/yptsqc/article/details/91040653

 2、push时报错大文件,删除后依然报错

        主要原因:是上传时候,其实不止是push当前版本,还要push所有历史版本,如果之前某次commit没有上传,那么这个历史版本也要默认被再次push。

        解决方法:使用git log查看所有版本,找到并reset,然后再add-》commit-》push。

        撤销commit请参考以下链接。

git如何撤销commit(未push)_鸡血博客-CSDN博客撤销commit一般用git reset ,语法如下:git reset [ --mixed | --soft | --hard] [<commit ID>]开始撤销commit的示例:输入git log,我们可以看到最近的3次提交,最近一次提交是test3,最早的一次是test1,其中一大串黄色的字母是commit id(版本号)如果嫌输出信息太多,可加上--p...https://blog.csdn.net/wangningjing87/article/details/103964060

3、GitHub 镜像访问

        这里提供两个最常用的镜像地址:

        https://github.com.cnpmjs.org

        https://hub.fastgit.org

4、errno 10054

fatal: unable to access 'https://github.com/xxxx/': OpenSSL SSL_read: Connection was reset, errno 10054

        解决办法 

git config --global http.sslVerify "false"
git config --globa http.postBuffer 524288000