一、git
部分内容来自廖雪峰的博客
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
1.Git是什么?
Git是目前世界上最先进的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
2.git的优点
我觉得git最大的优势还是分布式,那么下面来说一下集中式和分布式
集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了
分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。
3.安装部署git
1.安装git
[root@git ~]# yum install git -y
2.初始化git
初始化之前,我们最后好是建一个git专门用的文件夹
[root@git ~]# mkdir demo
[root@git ~]# cd demo/
[root@git demo]# git init
Initialized empty Git repository in /root/demo/.git/
[root@git demo]# git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
3.git用户和邮箱设置
[root@git demo]# git config --global user.name "lcz_orange"
[root@git demo]# git config --global user.email "892730644@qq.com"
4.添加文件到版本库
[root@git demo]# touch lei
[root@git demo]# echo nelws > lei
[root@git demo]# git status ##查看文件状态
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# lei
nothing added to commit but untracked files present (use "git add" to track)
[root@git demo]# git status -s ##精简版查看文件状态
?? lei
如上,我们看到刚新建的文件是??状态,那么有多少个状态呢?
??:未被git进行管理,可以使用git add file1把file1添加进git能被git所进行管理
M: 文件的内容或者mode被修改了
A: 你本地新增的文件(服务器上没有)
MM:在暂存区更改文件
R: 文件名被修改了
D: 你本地删除的文件(服务器上还在)
C: 文件的一个新拷贝
T: 文件的类型被修改了
U: 文件没有被合并(你需要完成合并才能进行提交)
简单来说,就是有三种状态
已提交(committed): 已提交表示该文件已经被安全地保存在本地数据库中了
已修改(modified): 已修改表示修改了某个文件,但还没有提交保存
已暂存(staged) : 已暂存表示把已修改的文件放在下次提交时要保存的清单中
那么我们如何把文件提交到版本库呢?
[root@git demo]# git add lei
[root@git demo]# git status -s
A lei
上面表示提交到了本地的git库,但是没有提交到服务器
[root@git demo]# git commit -m "add lei"
[master (root-commit) f2a35cf] add lei
1 file changed, 1 insertion(+)
create mode 100644 lei
[root@git demo]# git status -s
[root@git demo]#
如上,就是提交到了服务器
5.版本回退
第一次修改
[root@git demo]# echo xupt >> lei ##文件内添加内容
[root@git demo]# git status -s ##文件状态
M lei
第二次修改
[root@git demo]# echo xupt >> lei
[root@git demo]# git add lei
[root@git demo]# git commit -m "add 2 lei"
第三次修改
[root@git demo]# echo xupt-nelws > lei
[root@git demo]# git add lei
[root@git demo]# git commit -m "3 lei"
[master 52ed730] 3 lei
1 file changed, 1 insertion(+), 2 deletions(-)
查看git的日志
[root@git demo]# git log
commit 52ed7308c2042b9c1871322576e7dd9c1eb13e5a
Author: lcz_orange <892730644@qq.com>
Date: Wed Apr 3 17:24:02 2019 -0400
3 lei
commit 890b63cecf2d318014a75330cf7a5875c6308451
Author: lcz_orange <892730644@qq.com>
Date: Wed Apr 3 17:18:34 2019 -0400
add 2 lei
commit f2a35cf7fada92c0dd12ac1ac21c9bcd1cd64776
Author: lcz_orange <892730644@qq.com>
Date: Wed Apr 3 17:11:55 2019 -0400
add lei
还可以查看精简版
[root@git demo]# git log --pretty=oneline
52ed7308c2042b9c1871322576e7dd9c1eb13e5a 3 lei
890b63cecf2d318014a75330cf7a5875c6308451 add 2 lei
f2a35cf7fada92c0dd12ac1ac21c9bcd1cd64776 add lei
回滚操作
[root@git demo]# cat lei
xupt-nelws
[root@git demo]# git reset --hard HEAD^ ##回滚为上一个版本
HEAD is now at 890b63c add 2 lei
[root@git demo]# cat lei
nelws
xupt
我们还可以根据上面的commit id进行操作,直接回退到那个版本
[root@git demo]# git reset --hard f2a35
HEAD is now at f2a35cf add lei
[root@git demo]# cat lei
nelws
6.git中使用.gitignore文件
使用这个文件我们可以设置一些过滤规则,这样我们就可以使用git add .和git commit . ,而不用加文件名,进行全部提交,我们做一个实验
[root@git demo]# cp ~/.bashrc .
[root@git demo]# vim .gitignore
[root@git demo]# cat .gitignore ##过滤以.开头的文件
.*
[root@git demo]# git add .
[root@git demo]# git commit .
# On branch master
nothing to commit, working directory clean
[root@git demo]#
如上,我们虽然有一个.bashrc开头的文件,但是由于我们设置了过滤规则,所以我们没有将其上传
7.将文件传到远程仓库
此步需要可以上网
这里需要用到github,我们需要先注册一个github帐号,下面是github官网
首先新建一个仓库,点击下面的new
然后命名仓库,点击创建
接下来我们需要导入本机ssh的key,点击nelws仓库内的setting
点击下面的红框部分
如果本机没有公钥可以使用ssh-keygen来生成
[root@git ~]# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQQi9pxhnrlC0GdtCP2hgd83azEI91kSaq1e5+29OM3jRB3hZpqyFeDIZQgfsu6xXCWRriwH9jXGlXR8P6jfc8Fm6ZBlT68EmVRxggSvZiMBxsHv6NTYekf7/VftlGIOAooKQfqkmTBy6rmrVgFN04QQDpAe77zzjfDiloF4TZXiybYUFjPTAXLj/IEW8gQlUupk7hWhjAtNHcua/qNmJNgiUFpTJUAow6/ynrep3as6LKq7fzW3uXLNj77jaQl4ddPZcyblmuRGibTs0np9pIDT4vilvV+4Sk9iyCEYkHDyKn2nnSwD/sRkZBjdcHNN/QaJtQF1wxZlzRsiX8GdrT root@git
然后粘贴复制上面的公钥到github,如下图
然后使用下面的命令
[root@git ~]# cd demo/
[root@git demo]# git remote add origin git@github.com:orange-lei/nelws.git
[root@git demo]# cd ~
[root@git ~]# cat .gitconfig
[user]
name = lcz_orange
email = 892730644@qq.com
[root@git ~]# cd demo/
[root@git demo]# git remote -v
origin git@github.com:orange-lei/nelws.git (fetch)
origin git@github.com:orange-lei/nelws.git (push)
如上,已经成功的添加到了github的网站,接下来推送到github
[root@git demo]# git push -u origin master
The authenticity of host 'github.com (13.229.188.59)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,13.229.188.59' (RSA) to the list of known hosts.
Counting objects: 3, done.
Writing objects: 100% (3/3), 208 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:orange-lei/nelws.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
到github查看,成功~
8.下载github上的项目
github clone + github上面的ssh链接
ok~