分布式版本控制系统git

127 篇文章 0 订阅
36 篇文章 0 订阅

一、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官网

https://github.com/

首先新建一个仓库,点击下面的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~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值