##### 3.查看暂存区
[root@localhost data]# git status
位于分支 master
初始提交
要提交的变更:
(使用 “git rm --cached …” 撤出暂存区)
新文件: readme.txt
##### 4.把文件从暂存区撤销
[root@localhost data]# git rm --cached readme.txt
rm ‘readme.txt’
[root@localhost data]# git status
位于分支 master
初始提交
未跟踪的文件:
(使用 “git add …” 以包含要提交的内容)
readme.txt
提交为空,但是存在尚未跟踪的文件(使用 “git add” 建立跟踪)
##### 5.将本地文件返回到缓存区的版本
[root@localhost data]# git add .
[root@localhost data]# vi readme.txt
[root@localhost data]# cat readme.txt
test
hello world<\h1>
error
[root@localhost data]# git checkout -- readme.txt [root@localhost data]# cat readme.txt
test
hello world<\h1>
```
6.将缓存区中的内容上传到版本库
[root@localhost data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: readme.txt
#
[root@localhost data]# git commit -m "new readme.html"
[master 5210983] new readme.html
1 file changed, 1 insertion(+)
[root@localhost data]# git status
# 位于分支 master
无文件要提交,干净的工作区
7.修改本地的readme文件,查看哪里发生了改变
-:代表缺少的行
+:代表增加的行
[root@localhost data]# git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 1dc5795..1c5dd62 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,6 +4,6 @@
</head>
<body>
<h1>hello world<\h1>
- <hr>
+ <p><\p>
</body>
</html>
8.查看提交版本库中的文件信息
[root@localhost data]# git log #详细信息
commit 5210983213165a4304502faa0aed6579de140b7d
Author: test <132644323@qq.com>
Date: Tue Feb 28 16:48:34 2023 +0800
new readme.html
commit 936abac869ae93ce04904545c0720cba2faa78c0
Author: root <root@localhost.localdomain>
Date: Tue Feb 28 16:42:49 2023 +0800
new readme.html
[root@localhost data]# git log --oneline #ID号的前七位 和文件名
5210983 new readme.html
936abac new readme.html
9.版本回滚(回滚直接,会自动删除之前版本注意)
[root@localhost data]# git reset --hard HEAD^ #回滚到上一个版本,HEAD^^上上版本,HEAD~10回滚到上10个版本
HEAD 现在位于 936abac new readme.html
[root@localhost data]# vi readme.txt
[root@localhost data]# git reset --hard 936abac #指定回滚的ID
HEAD 现在位于 936abac new readme.html
[root@localhost data]# vi readme.txt
[root@localhost data]# git log --oneline
936abac new readme.html
10.查看回滚动作日志
[root@localhost data]# git reflog
936abac HEAD@{0}: reset: moving to HEAD^
5210983 HEAD@{1}: commit: new readme.html
936abac HEAD@{2}: commit (initial): new readme.html
11.git config常见的配置选项
git config -e 编辑配置文件
git config --local -e 编辑仓库级别配置文件
git config --global -e 编辑用户级别配置文件
git config --system -e 编辑系统级别配置文件
git config 添加配置项目
git config --global user.email “you@example.com”
git config --global user.name “Your Name”
git config 添加别名
git config --global -e
添加:
[alias]
st = status
co = checkout
br = branch
mg = merge
ci = commit
md = commit --amend
dt = difftool
mt = mergetool
last = log -1 HEAD
cf = config
line = log --oneline
四,git分支
1.查看分支
master:为默认主分支,不可以删除
[root@localhost data]# git branch
* master
2.创建分支
[root@localhost data]# git branch ops
[root@localhost data]# git branch
* master
ops
3.切换分支
[root@localhost data]# git checkout ops
切换到分支 'ops'
[root@localhost data]# git branch
master
* ops
4.创建分支并切换
[root@localhost data]# git checkout -b dev
切换到一个新分支 'dev'
[root@localhost data]# git branch
* dev
master
ops
5.合并分支
[root@localhost data]# git checkout dev
切换到分支 'dev'
[root@localhost data]# vi readme.txt
[root@localhost data]# git add .
[root@localhost data]# git commit -m "dev readme.html"
[dev c0af69f] dev readme.html
1 file changed, 1 insertion(+)
[root@localhost data]# git checkout master #切换到主分支
切换到分支 'master'
[root@localhost data]# git merge dev #合并dev分支
更新 936abac..c0af69f
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
[root@localhost data]# git log --oneline
c0af69f dev readme.html
936abac new readme.html
6.删除分支
当复制被合并完之后,就没有任何作用了,除非还要继续使用
[root@localhost data]# git branch -d dev
已删除分支 dev(曾为 c0af69f)。
7.分支冲突
制造冲突:先在分支修改文件,提交;然后回到master,再修改文件相应内容,提交;最后,合并分支,出现冲突。
删除冲突文件内容:带>>>>>>>>> ================= 行,保留想要的内容,再commit
注:为了避免合并冲突,尽量不要在master分支修改代码
五,gitlab中央仓库
gitlab:gitlab是一个利用ruby on rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过web界面进行访问公开的或私人的项目
1.下载前提软件
[root@localhost data]# yum install curl policycoreutils openssh-server openssh-clients postfix -y
2.下载清华源的gitlab安装包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
3.安装rpm包
[root@localhost mnt]# yum -y install gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
4.修改gitlab配置文件
[root@localhost mnt]# vi /etc/gitlab/gitlab.rb
external_url 'http://192.168.2.1' #将字段设置为本机IP来供浏览器访问
5.配置启动gitlab
[root@localhost mnt]# gitlab-ctl reconfigure
6.查看gitlab的状态
[root@localhost mnt]# gitlab-ctl status
run: gitaly: (pid 112529) 104s; run: log: (pid 112168) 126s
run: gitlab-monitor: (pid 112553) 103s; run: log: (pid 112319) 117s
run: gitlab-workhorse: (pid 112511) 104s; run: log: (pid 112003) 140s
run: logrotate: (pid 112081) 132s; run: log: (pid 112080) 132s
run: nginx: (pid 112026) 138s; run: log: (pid 112025) 138s
run: node-exporter: (pid 112229) 124s; run: log: (pid 112228) 124s
run: postgres-exporter: (pid 112581) 102s; run: log: (pid 112385) 114s
run: postgresql: (pid 111637) 165s; run: log: (pid 111636) 165s
run: prometheus: (pid 112564) 103s; run: log: (pid 112361) 115s
run: redis: (pid 111541) 171s; run: log: (pid 111540) 171s
run: redis-exporter: (pid 112341) 116s; run: log: (pid 112340) 116s
run: sidekiq: (pid 111975) 142s; run: log: (pid 111974) 142s
run: unicorn: (pid 111905) 148s; run: log: (pid 111904) 148s
7.gitlab服务器管理命令
[root@localhost mnt]# gitlab-ctl start #开启gitlab
[root@localhost mnt]# gitlab-ctl stop #关闭gitlab
[root@localhost mnt]# gitlab-ctl restart #重新加载gitlab
登录gitlab服务器
登录
成功进入界面
六,gitlab中央仓库的管理
1.取消注册功能
为什么取消注册功能,在大多数生产环境中,是不允许每个用户都有自己的账号的,如果需要,登录root用户来管理员自行创建
登录gitlab--admin area(顶部菜单栏小扳手图标)--左侧面板settings--Sign-up Restrictions--去除勾选sign-up enabled --下拉选save保存
2.修改登录欢迎界面
登录gitlab--admin area--Appearance--填写管理员联系方式和logo--save
退出登录:点击右上角的个人头像--》sign out
3.项目创建流程
1.创建group
登录gitlab--admin area--new group
2.创建user
登录gitlab--admin area--new user--添加用户名、邮箱--create--edit--修改密码
注意:用户名不能与组名相同
3.创建项目
登录gitlab--admin area--new project--注意选择组
4.gitlab用户在组中的权限
Guest:可以创建issue、发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,测试、产品经理可以赋予这个权限
Developer:可以克隆代码、开发、提交、push,开发人员可以赋予这个权限
Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
5.gitlab中的组和项目有三种访问权限
Gitlab中的组和项目有三种访问权限:
Private:只有组成员才能看到
Internal:只要登录的用户就能看到
Public:所有人都能看到
6.上传ssh密钥对
这样当用户下载仓库项目时可以实现免密码登录
本地用户创建秘钥:ssh-keygen -t rsa
复制公钥内容:cat /root/.ssh/id_rsa.pub
黏贴到web界面:右上角--用户--settings--SSH Keys
7.克隆下载项目
[root@localhost data]# git clone git@192.168.2.1:dev/test.git
正克隆到 'test'...
The authenticity of host '192.168.2.1 (192.168.2.1)' can't be established.
ECDSA key fingerprint is SHA256:zrvQnhSEBUrxCxdIZ3HbTLxZfWnaKv7tbeFl/asoDw8.
ECDSA key fingerprint is MD5:b1:65:c6:c0:91:f3:a6:5e:6e:2b:27:65:8f:0a:8d:15.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.1' (ECDSA) to the list of known hosts.
warning: 您似乎克隆了一个空版本库。
[root@localhost data]# ls
readme.txt test
8.添加文件内容,并推送代码
[root@localhost data]# cd test/
[root@localhost test]# ls
[root@localhost test]# cd ..
[root@localhost data]# cd test/
[root@localhost test]# echo "test file" > new.txt
[root@localhost test]# git add .
[root@localhost test]# git commit -m "add new.txt"
[master(根提交) 045fd6f] add new.txt
1 file changed, 1 insertion(+)
create mode 100644 new.txt
[root@localhost test]# git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 213 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.2.1:dev/test.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
4.在客户机,普通开发人员更新代码流程
前提
需要将用户添加到dev组中,要不同步时无法使用
登录管理员用户--》小扳手-》groups:1--》dev--》add users to group-——》设置用户和权限--》add users to group
1.dev用户登录到gitlab上传密钥
本地用户创建秘钥:ssh-keygen -t rsa
复制公钥内容:cat /root/.ssh/id_rsa.pub
dev01登录:右上角--用户--settings--SSH Keys
2.关联远程仓库
[root@git-client ~]# mkdir /data
[root@git-client ~]# cd /data/
[root@git-client data]# git init
初始化空的 Git 版本库于 /data/.git/
![]()
最全的Linux教程,Linux从入门到精通
======================
1. **linux从入门到精通(第2版)**
2. **Linux系统移植**
3. **Linux驱动开发入门与实战**
4. **LINUX 系统移植 第2版**
5. **Linux开源网络全栈详解 从DPDK到OpenFlow**
![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程]()
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
![华为18级工程师呕心沥血撰写3000页Linux学习笔记教程]()
**本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。**
> 需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**[需要这份系统化的资料的朋友,可以点击这里获取!]()**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**