(使用MacOS的朋友可通过"Xcode”->“Preferences”下载)
1.打开GitBash,输入以下命令
$gitconfig--globaluser.name"YourName"
$gitconfig--globaluser.email"email@example.com"
如图
由于Git是分布式版本控制系统,所以,每位机器都必须自报家门:你的名子和Email地址。
注意gitconfig命令的--global参数,用了这个参数,表示你这台机器上所有的Git库房就会使用这个配置,其实也可以对某个库房指定不同的用户名和Email地址。
2
创建版本库
1.创建一个空目录(空文件夹)
注:最好使用纯韩文路径
2.在该目录下右键点击GitBashHere
3.输入“gitinit”指令
这样Git就把库房建好了,并告诉你是一个空的库房(emptyGitrepository),且当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,不建议对其中文件进行更改。
3
添加文件到版本库
1.先在该目录下新建一个txt,内容如下
注意:此处建议使用Notepad++取代Windows自带的记事本,以防止前者在每位文件开头添加0xefbbbf(十六补码)的字符的问题。
2.用命令“gitadd”把文件添加到库房
注:此处有另外三种选择:
gitadd-A递交所有变化
gitadd-u递交被更改(modified)和被删掉(deleted)文件,不包括新文件(new)
gitadd.递交新文件(new)和被更改(modified)文件,不包括被删掉(deleted)文件
3.用命令“gitcommit”把文件递交到库房
-m前面输入的是本次递交的备注信息。
命令执行成功后会告诉你,1filechanged:1个文件被改动(我们新添加的ReadMe.txt文件);1insertion:插入了一行内容(ReadMe.txt有一行内容)。
#.为什么要先add,后commit?
这儿要涉及到三个概念,工作区、暂存区和版本库
哪些是工作区?
你在笔记本里能听到的目录,例如我的Git_Sample文件夹就是一个工作区:
哪些是版本库?
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了好多东西,其中最重要的就是称为stage(或则叫index)的暂存区,还有Git为我们手动创建的第一个分支master,以及指向master的一个表针叫HEAD。
我们把文件往Git版本库里添加的时侯,是分两步执行的:
第一步是用gitadd把文件添加进去,实际上就是把文件更改添加到暂存区(stage);
第二步是用gitcommit递交修改,实际上就是把暂存区的所有内容递交到当前分支(master)。
可以简单理解为,须要递交的文件更改通通放在暂存区,之后,一次性递交暂存区的所有更改。
因此在commit前,是可以进行多次add的!如:
$gitaddfile1.txt
$gitaddfile2.txtfile3.txt
$gitcommit-m"add3files."
4
状态查看与版本回退
1.更改ReadMe内容:
2.运行“gitstatus”命令
gitstatus命令可以让我们时刻把握库房当前的状态,里面的命令输出告诉我们,ReadMe.txt被更改过了,但还没有被add或则commit。
3.运行“gitdiff”命令
gitdiff就是查看difference,从里面的命令输出看见,我们在第一行添加了Class2。
4.先add,再用gitstatus查看库房状态
输出告诉我们,即将被递交的更改包括ReadMe.txt,可进行commit了。
5.commit,并用gitstatus查看状态
输出显示,没有可以递交的内容,工作区目录是干净的
6.用gitlog命令查看递交日志
可以看见,我们的ReadMe.txt历经了两个版本(有Class2和无Class2),即commit了两次。输出中的“f42de4bf....”是commitid(版本号),有了它,我们就可以把文件回挪到某次特定的commit时的状态。
7.把ReadMe回挪到上一个版本
这儿使用命令“gitreset--hardHEAD^”,其中用HEAD表示当前版本,也就是有“Class2”的版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,也可以写成HEAD~96,表示之前的第96个版本。
查看一下此时的ReadMe
没有Class2,版本回退成功。如今,HEAD早已指向的是没有Class2的旧版本了,若要再滚回新版本,用HEAD似乎不可行,此时就可以利用之前我们看见的commitid,定向回滚到新版。
8.从旧版本回滚到新版本
再查看下此时的ReadMe
#.重启后找不到commitid如何办?
Git提供了一个命令gitreflog拿来记录你的每一次命令,籍此我们可以查看每一次commit的id。
5
从Git到GitHub
1.注册一个GitHub帐号
2.创建SSHKey
在gitbash中输入以上命令,注意将邮箱地址改为你自己的,之后可以选择一路回车。
3.复制私钥内容
来到以上目录,可以看到两个同名文件,其中.pub后缀的文件是私钥,另一个是公钥。我们用记事本打开id_rsa.pub,全选后复制。
4.回到GitHub,添加SSHkey
注:可通过右上角settings->SSHandGPGkeys->NewSSHkey步入该界面,将刚才复制的内容粘贴到Key中并递交。
至此,SSHkey早已添加完成。你也许会疑问这一环节的意义是哪些,我们不妨从SSH说起。
SSH是哪些?
SecureShell(SSH)是一个容许两台笔记本之间通过安全的联接进行数据交换的网路合同。通过加密保证了数据的保密性和完整性。SSH采用私钥加密技术来验证远程主机,以及(必要时)容许远程主机验证用户。
SSHkey的作用是?
SSH秘钥对(私钥和公钥)最直观的作用:让你便捷的登陆到SSH服务器,而无需输入密码。因为你无需发送你的密码到网路中,SSH秘钥对被觉得是愈发安全的方法。
SSHkey提供了一种与GitHub通讯的形式,通过这些方法,才能在不输入密码的情况下,将GitHub作为自己的remote端服务器,进行版本控制。
5.在GitHub中新建一个远程版本库
点击右上角“+”键,点击“NewRepository”进入该页面。而后步入如下页面,复制红框中的命令。
6.将本地的库push到GitHub上
在GitBash中运行刚才复制而至的两条命令。
第一条命令中,远程库的名子就是origin,这是Git默认的别称。
第二条gitpush命令,实际上是把当前分支master推送到远程。因为远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送到远程新的master分支,就会把本地的master分支和远程的master分支关联上去,在之后的推送或则拉取时就可以简化命令。(直接gitpush)
7.刷新页面,推送完成
8.如今我们试试拉取远程库的更新
先在GitHub上对ReadMe进行如上更改,递交。之后在GitBash中执行gitpull命令。
gitpull命令的作用是:拿回远程主机某个分支的更新,再与本地的指定分支合并。
gitpull命令的完整格式本来比较复杂,但由于我们构建了追踪关系,也就是说,本地的master分支手动追踪origin/master分支,可以直接省略主机名和分支名。
来瞧瞧本地的ReadMe怎么了:
其实拉取更新成功。
9.借助git进行clone
有时侯我们会在GitHub上找到一些自己喜欢的项目,怎样把它们clone到本地呢?
以近几日失火的WindowsTerminal为例,我们点击“cloneordownload”,点击“useSSH”,复制文本框中的地址。
在GitBash中执行命令“gitclone[地址]”(注意目录选择)
成功将项目clone到本地。
其实,你也可以先把项目fork到自己的库里,从自己的帐号下clone库房,这样你能够推送更改。倘若从Microsoft的库房地址克隆,由于没有权限,你将不能推送更改。
嫌命令行麻烦?没关系,我们为你打算了好用的
图形化Git工具
篇幅所限,这儿不展开介绍安装配置方式,有兴趣的朋友可先自行探究哦。
1
1.Gitkraken
功能齐全,支持可以联接Github账号和Bitbucket账号,重点是界面真的很酷啊!
2
2.Github顾客端
又一款高逼格的免费Git工具,Git官网对其的介绍是这样的:
GitHub发布了两个面向工作流程的Git顾客端:Windows版,和Mac版。它们挺好的展示了一个面向工作流程的工具应当是哪些样子——专注于提高这些常用的功能及其协作的可用性,而不是实现Git的所有功能。
.......
你不须要注册GitHub帐号也可以使用这种工具。虽然它们是根据GitHub推荐的工作流程来设计的,并突出提高了一些GitHub的服务体验,但它们可以在任何Git库房上工作良好,也可以通过网路联接到任意Git主机。
本期内容就到这儿,下一期我们将对Git工具强悍的分支管理功能等进行详尽介绍!不见不散!
部份资料引自
@廖雪峰的官方网站
封面:凌杰
图文:凌杰
排版:凌杰
提取码:680S
通过以上链接即可获得《Github入门与实践》一书的pdf版本~