企业运维篇——git+gitlab实现代码上传

一.git的详细使用

1.安装git

[root@server1 ~]# yum install -y git

在这里插入图片描述
2.建立存放git代码的目录

[root@server1 ~]# mkdir demo
[root@server1 ~]# cd demo/
[root@server1 demo]# ls

3.初始化

[root@server1 demo]# git init
Initialized empty Git repository in /root/demo/.git/
[root@server1 demo]# git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
[root@server1 demo]# 

4.创建一个文件

[root@server1 demo]# touch file1
[root@server1 demo]# echo redhat > file1
[root@server1 demo]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	file1
nothing added to commit but untracked files present (use "git add" to track)

5.检查文件,把文件添加进去

[root@server1 demo]# git status -s
?? file1
[root@server1 demo]# git add file1
[root@server1 demo]# git status -s
A  file1    #A表示已经添加到暂存区了

在这里插入图片描述
6.提交更改,把暂存区的所有内容提交到当前分支

[root@server1 demo]# git commit -m "add file1"

在这里插入图片描述

7.需要添加邮箱和用户名才能提交成功

[root@server1 demo]# git config --global user.email "[email protected]"
[root@server1 demo]# git config --global user.name "hello"
[root@server1 demo]# git commit -m "add file1"
[master (root-commit) 5a69b29] add file1
 1 file changed, 1 insertion(+)
 create mode 100644 file1
[root@server1 demo]# git status -s #提交成功后就没有文件显示

在这里插入图片描述
8.git status的状态显示分类:

  • 新添加的未跟踪文件前面有 ?? 标记

  • 新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M 标记。

  • 出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。

  • MM表示工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录

例子:

[root@server1 demo]# echo hello >> file1
[root@server1 demo]# git status -s
 M file1

在这里插入图片描述

[root@server1 demo]# git add file1
[root@server1 demo]# git status -s
M  file1

在这里插入图片描述

[root@server1 demo]# echo hello >> file1
[root@server1 demo]# git status -s
MM file1

在这里插入图片描述

[root@server1 demo]# git add file1
[root@server1 demo]# git status -s
M  file1

在这里插入图片描述

root@server1 demo]# git commit -m "change file1"
[master c635834] change file1
 2 files changed, 3 insertions(+)
 create mode 100644 test1
[root@server1 demo]# git status -s

在这里插入图片描述
8.忽略文件
一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式。

[root@server1 demo]# git status -s
 D test1
[root@server1 demo]# cd
[root@server1 ~]# l.
.              .bash_logout   .cshrc      .viminfo
..             .bash_profile  .gitconfig
.bash_history  .bashrc        .tcshrc
[root@server1 ~]# cp .bashrc demo/
[root@server1 ~]# cd demo/
[root@server1 demo]# git status -s
?? .bashrc

在这里插入图片描述
在这里插入图片描述

[root@server1 demo]# vim .gitignore

在这里插入图片描述

[root@server1 demo]# git status -s
[root@server1 demo]# l.
.  ..  .bashrc  .git  .gitignore

在这里插入图片描述

9.版本回退
不断对文件进行修改,然后不断提交修改到版本库里,Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。

git checkout – file 以丢弃工作区的修改,就是让这个文件回到最近一次git commit或git add时的状态
git log 显示从最近到最远的提交日志
git log --pretty=oneline 查看简略日志信息
git reflog 查看历史记录
git reset --hard HEAD^ 上一个提交状态就是HEAD^ ,上上一个提交状态就是HEAD^^
git reset --hard 回退到指定提交状态

1).让文件回到最近一次git commit或git add时的状态
在这里插入图片描述
2).显示从最近到最远的提交日志

 [root@server1 demo]# git log
commit 3c2ca2c1002c7f4b37e45def488f638db7b37638
Author: hello <[email protected]>
Date:   Sun Jun 2 05:19:25 2019 +0800
commit c635834c1a9a6dd73fca763361f5fea64053da74
Author: hello <[email protected]>
Date:   Sun Jun 2 05:06:48 2019 +0800

    change file1

commit 5a69b29fa296ba3732c0234b59d6e491b34e99e7
Author: hello <[email protected]>
Date:   Sun Jun 2 04:48:43 2019 +0800

    add file1
[root@server1 demo]# echo hello > file1
[root@server1 demo]# cat file1 
hello
[root@server1 demo]# git add file1
[root@server1 demo]# git commit -m "v3"
[master fa4fb6b] v3
 1 file changed, 2 deletions(-)
[root@server1 demo]# git log
commit fa4fb6b1f9317e1a3789dabd10e84890f8cc6b37
Author: hello <[email protected]>
Date:   Sun Jun 2 05:34:50 2019 +0800

    v3

commit 3c2ca2c1002c7f4b37e45def488f638db7b37638
Author: hello <[email protected]>
Date:   Sun Jun 2 05:19:25 2019 +0800


commit c635834c1a9a6dd73fca763361f5fea64053da74
Author: hello <[email protected]>
Date:   Sun Jun 2 05:06:48 2019 +0800

    change file1

commit 5a69b29fa296ba3732c0234b59d6e491b34e99e7
Author: hello <[email protected]>
Date:   Sun Jun 2 04:48:43 2019 +0800

    add file1

3).查看简略日志信息

[root@server1 demo]# git log --pretty=oneline
fa4fb6b1f9317e1a3789dabd10e84890f8cc6b37 v3
c635834c1a9a6dd73fca763361f5fea64053da74 change file1
5a69b29fa296ba3732c0234b59d6e491b34e99e7 add file1

4).查看历史记录

[root@server1 demo]# git reflog
fa4fb6b HEAD@{0}: commit: v3
c635834 HEAD@{1}: commit: change file1
5a69b29 HEAD@{2}: commit (initial): add file1

5).git reset --hard HEAD^

[root@server1 demo]# git status -s
[root@server1 demo]# cat file1 
hello
[root@server1 demo]# git reset --hard HEAD^
HEAD is now at 3c2ca2c remove file1
[root@server1 demo]# cat file1 
redhat
hello
hello
[root@server1 demo]# git log --pretty=oneline
c635834c1a9a6dd73fca763361f5fea64053da74 change file1
5a69b29fa296ba3732c0234b59d6e491b34e99e7 add file1

6).回退到指定提交状态

[root@server1 demo]# git log --pretty=oneline
3c2ca2c1002c7f4b37e45def488f638db7b37638 remove test1
c635834c1a9a6dd73fca763361f5fea64053da74 change file1
5a69b29fa296ba3732c0234b59d6e491b34e99e7 add file1
[root@server1 demo]# git reflog
3c2ca2c HEAD@{0}: reset: moving to HEAD^
fa4fb6b HEAD@{1}: commit: v3
c635834 HEAD@{2}: commit: change file1
5a69b29 HEAD@{3}: commit (initial): add file1
[root@server1 demo]# git reset --hard fa4fb6b
HEAD is now at fa4fb6b v3

10.删除后恢复
1).删除后没有提交

 [root@server1 demo]# rm -f file1 
 [root@server1 demo]# git checkout -- file1
 [root@server1 demo]# ls
 file1

2).删除且提交后

[root@server1 demo]# rm -f file1
[root@server1 demo]# git rm file1
rm 'file1'
[root@server1 demo]# git commit -m "del file11"
[master 6001243] del file11
 1 file changed, 1 deletion(-)
 delete mode 100644 file1
[root@server1 demo]# git reflog
6001243 HEAD@{0}: commit: del file11
fa4fb6b HEAD@{1}: reset: moving to fa4fb6b
3c2ca2c HEAD@{2}: reset: moving to HEAD^
fa4fb6b HEAD@{3}: commit: v3
c635834 HEAD@{4}: commit: change file1
5a69b29 HEAD@{5}: commit (initial): add file1
[root@server1 demo]# git reset --hard fa4fb6b
HEAD is now at fa4fb6b v3
[root@server1 demo]# cat file1 
hello

二.gitlab部署

[root@server1 ~]# yum install -y gitlab-ce-11.9.9-ce.0.el7.x86_64.rpm 

在这里插入图片描述
指定ip和端口

[root@server1 ~]# vim /etc/gitlab/gitlab.rb 

在这里插入图片描述
更新配置

 [root@server1 ~]# gitlab-ctl reconfigure

在这里插入图片描述
浏览器访问172.25.70.1:8081,首次登陆修改密码root用户重新登陆
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@server1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
e8:88:c9:ab:3e:77:59:45:ce:87:1e:f6:9c:fe:e8:e9 root@server1
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|         .       |
|        + .      |
|       . B .     |
|      . S = .    |
| . o o . . +     |
|  + . +   .      |
| . o o     .o    |
|oo+ .     oE..   |
+-----------------+
[root@server1 ~]# cd /root/.ssh/
[root@server1 .ssh]# ls
id_rsa  id_rsa.pub

在这里插入图片描述

[root@server1 .ssh]# cat id_rsa.pub 

在这里插入图片描述
设置git用户名和邮箱

[root@server1 ~]# git config --global user.name "gituser"
[root@server1 ~]# git config --global user.email "[email protected]"

重新创建有一个gitlab工程gitlabtest
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
第一次克隆会不成功

[root@server1 .ssh]# git clone [email protected]:root/gitlabtest.git
Cloning into 'gitlabtest'...
The authenticity of host '172.25.70.1 (172.25.70.1)' can't be established.
ECDSA key fingerprint is 23:30:b9:0b:bd:7e:c3:05:4e:9a:fb:6f:c5:d6:23:c9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.25.70.1' (ECDSA) to the list of known hosts.
warning: You appear to have cloned an empty repository.

第二次重新克隆就成功了

[root@server1 ~]# git clone [email protected]:root/gitlabtest.git
Cloning into 'gitlabtest'...
warning: You appear to have cloned an empty repository.
[root@server1 ~]# ls
anaconda-ks.cfg  gitlab-ce-11.9.9-ce.0.el7.x86_64.rpm  gitlabtest

在这里插入图片描述
提交上传代码文件readme,内容为redhat

[root@server1 ~]# cd gitlabtest/
[root@server1 gitlabtest]# ls
[root@server1 gitlabtest]# touch readme.md
[root@server1 gitlabtest]# echo redhat > readme.md 
[root@server1 gitlabtest]# git add readme.md 
[root@server1 gitlabtest]# git commit -m "add readme"
[master (root-commit) 4a07429] add readme
 1 file changed, 1 insertion(+)
 create mode 100644 readme.md
[root@server1 gitlabtest]# git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 208 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:root/gitlabtest.git

在这里插入图片描述
在浏览器中查看readme文件已经上传成功
在这里插入图片描述
点击readme可查看代码内容
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44321116/article/details/90734838