Git与GitHub(上)
前言
这部分写于寒假,之前学过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为代表的集中型,会将如下图所示的仓库集中存放在服务器之中,所以只存在一个仓库,这就是为什么会被称为集中型。
集中型将所有数据集中存放在服务器当中,有便于管理的优点。但是一旦开发者所处的环境不能连接服务器,就无法获取最新的源代码,开发也就几乎无法进行。服务器宕机时也是同样的道理,而且万一服务器故障导致数据消失,恐怕开发者就再也见不到代码了。
分散型
如下图为GitHub分散型示意图。如图中所示,GitHub将仓库
Fork
给了每一个用户。Fork
就是将GitHub的某个特定仓库复制到自己的账户下。Fork
出的仓库与原仓库是两个不同的仓库,开发者可以随意编辑。
分散型拥有多个仓库,相对而言稍显复杂。不过,由于本地的开发环境中就有仓库,所以开发者不必远程连接仓库就可以进行开发。
集中型和分散型哪个更好?
各有优缺点,根据具体情况而定,不存在绝对的“好”。
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代码示例的演示版本双击运行,选择下一步(Next)
选择安装位置,点击Next
根据需要选择相应组件,或者直接默认即可,点击Next
选择Win菜单中Git相关文件目录,无需求的可以选择默认,点击Next
如果选择默认,则在开始菜单中可以找到git相关文件如下图:
选择Git默认编辑器,无特殊需求默认即可,有特殊需求的需要另行安装编辑器,并在安装时指定编辑器,并配置相关环境变量。默认则直接点击Next即可。
选择初始化仓库的主干名称,默认为第一项,即让Git选择,名称为
master
,未来可能会改名。第二项是我们可以自定义名称,下面附注的翻译为:很多团队已经重命名他们的默认主干名,常见的选择为 main,trunk 以及 development,你可以修改你的主干名称为:选择修改Path环境变量,无特殊需求可以直接默认,点击Next即可
翻译:选择HTTPS后端传输规则,同理无特殊需求默认即可。
关于两个选项的区别可以参考[What’s the difference between OpenSSL and the native windows Secure Channel library]
末尾换行符的处理,同理无特殊需求,默认即可
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的差异
配置终端模拟器与Git Bash一起使用,同理无特殊需求默认即可,点击Next。
翻译:
选择默认的
git pull
行为,无特殊需求默认即可,点击Next。选择一个凭证帮助管理,无特殊需求无须配置,点击Next即可。
其他配置,无特殊需求默认即可。
翻译:
实验性功能选项,无特殊需求默认即可,然后选择
Install
等待安装即可。安装成功后可以通过鼠标右键查看到如下快捷导航:
Git初始设置
在随便一个位置,右键鼠标,选择Git Bash Here
,在之后弹出的程序控制台中进行操作。
Git GUI Here
是Git提供的GUI图形化界面,但是用处不大,可以不用考虑- 关于
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运行结果示例:
这里设置的姓名和邮箱地址会用在Git的提交日志中。由于GitHub上公开仓库时,这里的姓名和邮箱也会随着提交日志一同被公开,所以注意不要使用隐私信息。
提高命令输出的可读性
可以通过将
color.ui
设置为auto
来让命令的输出有更高的可读性。代码示例:1
git config --global color.ui auto
GitHub的相关准备
访问GitHub网页,或者单击这里,进行GitHub的相关准备。
创建账户
进入如下类似界面创建账户,需要注意的是Username设置好后,个人公开页面URL即(httpss://github.com/+username),其他项目根据提示完成填写并创建账户。
设置头像
在GitHub上随处可见的头像是通过Gravatar服务显示的。使用过
WordPress
的玩家可能会对它有所了解。当然现在,可以直接点击我的头像,进入设置,上传自定义头像。
设置SSH Key
GitHub上链接已有仓库时的认证,是通过SSH公开密钥认证方式进行的。现在需要来创建公开密钥认证所需要的SSH Key,并将其添加到GitHub上。运行下面的命令来创建SSH Key:
1
ssh-keygen -t rsa -C "这里添你的邮箱"
输入后会弹出一行提醒:
1
2Enter file in which to save the key (/c/Users/电脑用户文件夹/.ssh/id_rsa):
这里是告诉你SSH key保存在哪个路径下,只需要按下回车确认就可以剩下的如下图所示,根据提示设置密码:
需要注意的是,密码输入后会不显示在控制台上,所以不要误认为控制台失灵了
设置成功会弹出如下提醒:
同样的,你可以在它保存的路径下找到相关公钥和密钥文件:
在GitHub上添加公开密钥
在GitHub上添加公开密钥,今后就可以使用私有密钥进行认证了。
进入GitHub网站,登录你的账户,单击头像,选择
Settings
(设置)进入设置页面,在左栏找到
SSH and GPG keys
,单击进入,在SSH keys
栏选择New SSH keys
(创建新的公钥)Title
部分可以自定义,Key
需要填写公钥文件里的内容,可以通过找到路径文件,选择以记事本格式打开,或者通过下面的命令来查看:1
cat ~/.ssh/id_rsa.pub
点击添加,输入密码二次确认,添加成功后,可以在
SSH keys
栏看到刚刚添加的公钥,并且创建账户时所用的邮箱也会收到一封“公钥添加完成”的邮件提醒。在添加完成后,现在可以尝试使用手中的私钥与GitHub进行认证和通信了。命令示例:
1
ssh -T git@github.com
出现如下提示,则表示连接成功。
同理,这里输入密码,也是不可见的
使用社区功能
你可以通过
Follow
来关注某人,这样一来,你关注的对象(用户)的活动就会在你的控制面板中显示出来,你可以看到该用户在GitHub上做了什么,可以通俗理解为微博关注了某人,某人的动态你就可以看到了。
GitHub实操上手
创建仓库
在GitHub右上角,点击加号,选择
New repository
来创建新仓库。Repository template(存储库模板)
可以选择自定义存储卡模板,无特殊需求可以不用管。
Repository name(仓库名称)
为你创建的仓库自定义一个名称。
Description(仓库描述)
为你仓库添加一个描述,可以为空
Public/Private(仓库类型)
仓库的类型,Public或者Private:
- Public:公开/公有,即别人可以看到你的代码
- Private:私有,即别人看不到,只有自己或者授权的人才可以访问
私有仓库收费的,不过被微软爸爸收购后,可以免费提供最多3人协助私有仓库支持。
目前示例,创建公有即可
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文件,用来表明仓库的许可协议。
全部选择完成后,点击创建即可创建一个新的仓库。
仓库初始页面
如下为创建的新仓库页面示例:
我们可以通过示例连接来
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
语法即可。
使用Git对仓库的基本操作
Clone
仓库选择一个要克隆的文件夹,对着空白处右键,选择
Git Bash here
,然后在控制台输入如下命令:1
git clone 这里是仓库的地址
仓库地址可以在GitHub SSH选项下复制:
然后输入设置密钥时的密码即可
Clone
该仓库到指定的本地文件夹:编写代码
现在在
Clone
的本地文件夹下,创建文件1.txt
,随便写些内容。例如:1
123
然后通过输入以下命令来查看文件状态:
1
git status
提交
然后将
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
这样一来,我们更新的操作就会在GitHub上面公开了。
End
这是基本的Git和GitHub的基础和交互基础,对于Git和GitHub连接提交等命令看不懂目前没问题,只需要跟着操作熟悉一下环境和命令即可,后面的部分会详细讲述git相关命令。