持续集成与交付(1) git工具的使用

git项目有三个阶段,工作区,暂存区,和git目录

git安装

yum install -y git
[root@server1 demo]# git init ##初始化仓库

初始化空的 Git 版本库于 /root/demo/.git/

[root@server1 demo]# ll -a
总用量 0
drwxr-xr-x  3 root root  18 3月  12 19:47 .
dr-xr-x---. 3 root root 163 3月  12 19:46 ..
drwxr-xr-x  7 root root 119 3月  12 19:47 .git ##这个目录用来保存信息

所有操作应该在demo这个目录中完成,因为需要加载.git目录中的信息。
编写一个文件,用来测试

[root@server1 demo]# vim readme.txt
hello world

编写完成我们查看状态,提示我们要使用add来进行提交

[root@server1 demo]# git status 
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#	readme.txt
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@server1 demo]# git status -s
?? readme.txt    ##前面两个问号表示未添加到版本库中

创建的时候注意,git需要纯文本才可以使用。

[root@server1 demo]# git add readme.txt 

添加之后文本会到暂停区中,下一步需要commit进行提交才可以到达目录中

[root@server1 demo]# git status -s
A  readme.txt   ##前面这个A表示在暂停区中
[root@server1 demo]# git commit -m "add readme.txt"  ##进行提交操作,引号中表示添加的信息

*** Please tell me who you are.

Run   ##这里会让你添加一个名字和邮箱

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'root@server1.(none)')
[root@server1 demo]# git config --global user.name "passyt"  ##添加之后每次提交都会有记录之后进行审计操作
[root@server1 demo]# git config --global user.email "passyt@root.com"
每次提交完成后会将这些信息进行保存
[root@server1 ~]# cat .gitconfig 
[user]
	name = passyt
	email = passyt@root.com

添加完成后再进行提交就不会报错了。

[root@server1 demo]# git commit -m "add readme.txt"
[master(根提交) 0d67823] add readme.txt
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt
[root@server1 demo]# git status -s

这个时候再查看状态就发现什么都没有,因为已经完成,没有
当我们将刚才上传的文件内容进行修改

[root@server1 demo]# vim readme.txt 
hello world
hello world
hello world
hello world
hello world
[root@server1 demo]# git status 
# 位于分支 master
# 尚未暂存以备提交的变更:
#   (使用 "git add <file>..." 更新要提交的内容)
#   (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
#	修改:      readme.txt
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#



修改尚未加入提交(使用 "git add" 和/或 "git commit -a"

查看状态提示要么提交,要么撤销修改。如果使用撤销命令,那么文件就会变成最开始提交时的状态。

[root@server1 demo]# git status -s ##再查看状态
 M readme.txt           ##仔细看前面M的状态以及位置
[root@server1 demo]# git add readme.txt ##添加
[root@server1 demo]# git status -s
M  readme.txt           ##和上面的位置做对比

前面的位置表示没有在暂存区,后者表示已经到达暂存区。
如果说我们再次进行修改,以及查看状态

[root@server1 demo]# git status -s
MM readme.txt  ##前面的M变成了两个,

到了这个状态我们需要再次进行添加才可以,添加完成才可以进行提交操作

[root@server1 demo]# git add readme.txt 
[root@server1 demo]# git status -s
M  readme.txt
[root@server1 demo]# git commit -m "change readme.txt"
[master cbcb8af] change readme.txt
 1 file changed, 3 insertions(+)

忽略文件

在正常生产环境中会产生很多临时文件或者隐藏文件,但是仓库也会将这些文件添加进来,这些文件我们不需要,所以我们就要将这些文件进行忽略。

[root@server1 demo]# touch .a
[root@server1 demo]# git status -s
?? .a

如何忽略
创建一个隐藏文件.gitignore

[root@server1 demo]# vim .gitignore
.*   ##所有隐藏文件都进行忽略

这个时候再查看状态,这些隐藏文件就不会进行添加。

查看修改

我们将readme文件进行一些修改,这些修改如何直观的查看,使用diff

[root@server1 demo]# git diff
diff --git a/readme.txt b/readme.txt
index 1ecd5ed..1b11f8b 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,3 @@
 hello world
 hello world
 hello world
-hello world  ##这里我们可以看到删除了一行

移除文件

我们可以直接在目录中将我们编写的文件进行删除,但是这删除的只是文件,而且这个文件依然保存在暂存区。

[root@server1 demo]# rm -rf readme.txt 
[root@server1 demo]# git diff
diff --git a/readme.txt b/readme.txt
deleted file mode 100644
index 1b11f8b..0000000
--- a/readme.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-hello world
-hello world
-hello world
[root@server1 demo]# git status -s
 D readme.txt

如果后悔了可以使用checkout进行还原到上一次提交的状态。如果真要删除那么要使用git再删除一遍。之后再进行提交才可以。

[root@server1 demo]# git rm readme.txt
rm 'readme.txt'
[root@server1 demo]# git status -s
D  readme.txt

但是即使在使用git命令删除后依然可以进行撤销,使文件从暂存区退回工作区,在次撤销从工作区撤销文件就恢复了。

[root@server1 demo]# git reset HEAD readme.txt
重置后撤出暂存区的变更:
D	readme.txt
[root@server1 demo]# ls
[root@server1 demo]# git status -s
 D readme.txt
[root@server1 demo]# git checkout -- readme.txt
[root@server1 demo]# ls
readme.txt

最后进行提交才能真正的删除

[root@server1 demo]# git commit -m "delete"
[master 65e1194] delete
 1 file changed, 3 deletions(-)
 delete mode 100644 readme.txt

但是如果已经删除完成并且进行提交后还能撤销吗?答案时可以的,但是首先我们要查看我们都干了些什么。

[root@server1 demo]# git log --pretty=oneline ##查看记录
65e11945d33a4bcdf5ae8f041bee7fea33db13a5 delete
72b4d316b9a7bdfb1025f38d9f7bc617ec7412e7 v1
cbcb8af586d79899b3c7b605b4afadee5c3bb0ec change readme.txt
0d67823884f6a9002d0faac8faf6cb179103541e add readme.txt

[root@server1 demo]# git reflog 
65e1194 HEAD@{0}: commit: delete
72b4d31 HEAD@{1}: commit: v1
cbcb8af HEAD@{2}: commit: change readme.txt
0d67823 HEAD@{3}: commit (initial): add readme.txt
[root@server1 demo]# git reset --hard 72b4d31  ##返回哪里,哪个版本
HEAD 现在位于 72b4d31 v1
[root@server1 demo]# ls
readme.txt
[root@server1 demo]# cat readme.txt 
hello world
hello world
hello world

这样就直接将文件进行了恢复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值