一、Git简介
Git是目前世界上最先进的分布式版本控制系统。
集中式和分布式版本控制系统有什么区别呢?
(1)集中式:集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器获取最新的版本,然后开始干活,干完活后,再把自己的活推送给中央服务器。最大的毛病就是必须联网,在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话就很痛苦。
(2)分布式:分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,工作的时候,不需要联网了,因为版本库就在自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?例如你在自己电脑上改了文件A,你的同事在他的电脑上也改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
二、安装Git(windows版)
官网下载windows版本,直接next即可;安装完成后,打开git bash

在上述窗口进行git命令操作
三、配置身份
打开git bash,执行以下命令配置身份,这样在提交代码的时候Git就可以知道是谁提交的

通过以下命令验证是否配置成功
git config --global user.name
git config --global user.email
四、创建代码仓库
仓库(Repository)是用于保存版本管理所需信息的地方,所有本地提交的代码都会被提交到代码仓库中,如果有需要还可以再推送到远程仓库中。
首先,选择一个合适的地方,通过git init命令把这个目录变成Git可以管理的仓库,如下:

执行完后,在d盘根目录下生成一个隐藏的.git文件夹,这个文件夹是用来记录本地所有的Git操作的,如果想要删除本地仓库,删除这个文件夹就行了。
五、基本命令
1、提交代码
使用add和commit命令来提交代码,add用来把想要提交的代码先添加进来,commit用来执行提交操作;
git add 文件名或者目录名
git add . -----------(一次性添加所有文件)
git commit -m"message" ---------(-m参数表示提交的描述信息,没有描述信息的提交被认为是不合法的)

2、查看提交记录
可以使用log命令查看历史提交信息:git log

如果只想查看其中一条记录,可以在命令中指定该记录的id,并加上 -1参数,表示只看到一行记录;
如果要查看这条提交记录具体修改了什么内容,则在命令中加入 -p参数

3、版本回退
在Git中,用head表示当前版本,上一个版本是head^,上上一个版本是head^^
回退版本可使用命令:git reset --hard commit_id

回退后,又想还原回去,使用命令git reflog查看commit_id

4、撤销修改
在还没有git add之前,使用命令撤销:git checkout --

已经使用了add,但是还没有commit,使用命令:git reset head file

5、删除文件
从版本库中删除该文件,先使用命令git rm删掉,接着git commit -m"message"
六、远程仓库
1、注册GitHub账号
GitHub网站,提供Git仓库托管服务,只要注册一个GitHub账号,就可以免费获得Git远程仓库。
https://github.com/
2、添加SSH KEY
我们本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,首先在目录里看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Git Bash,创建SSH Key:ssh-keygen -t rsa -C "XXX@example.com"


登陆GitHub,在setting中设置ssh keys


3、添加远程库
添加一个新的repository


创建成功后,根据提示,在本地仓库运行命令:git remote add origin https://github.com/XXX/learngit.git

添加成功后,远程库的名字就是origin,这是Git默认的叫法。
接着把本地库的内容推送到远程库上:

推送成功后,可在GitHUB上看到我们推送的内容;以后每次本地提交后,就可以使用命令git push origin master推送最新的修改内容了。
从远程仓库克隆,需要知道仓库的地址,使用命令:git clone

也可以直接通过网页操作,如下:

网友评论