先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文


查看git的状态



[root@gitlab git_data]# git status
 # 位于分支 master
 无文件要提交,干净的工作区
 ​
 # On branch master
 nothing to commit, working directory clean


提交后的git目录状态



[root@gitlab git_data]# tree .git/
 .git/
 ├── branches
 ├── COMMIT_EDITMSG
 ├── config
 ├── description
 ├── HEAD
 ├── hooks
 │   ├── applypatch-msg.sample
 │   ├── commit-msg.sample
 │   ├── post-update.sample
 │   ├── pre-applypatch.sample
 │   ├── pre-commit.sample
 │   ├── prepare-commit-msg.sample
 │   ├── pre-push.sample
 │   ├── pre-rebase.sample
 │   └── update.sample
 ├── index
 ├── info
 │   └── exclude
 ├── logs
 │   ├── HEAD
 │   └── refs
 │       └── heads
 │           └── master
 ├── objects
 │   ├── 54
 │   │   └── 3b9bebdc6bd5c4b22136034a95dd097a57d3dd
 │   ├── bb
 │   │   └── 963eb32ad93a72d9ce93e4bb55105087f1227d
 │   ├── e6
 │   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
 │   ├── info
 │   └── pack
 └── refs
    ├── heads
    │   └── master
    └── tags


#### 1.6.2 添加新文件



> 
> 
> ```
>  git add  * 添加到暂存区域
>  git commit  提交git仓库 -m 后面接上注释信息,内容关于本次提交的说明,方便自己或他人查看
> ```
> 
> 


修改或删除原有文件


常规方法



> 
> 
> ```
>  git add  *
>  git commit
> ```
> 
> 


简便方法



> 
> 
> ```
>  git commit -a  -m "注释信息"
> ```
> 
> 


-a 表示直接提交



> 
> 
> ```
>  Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are
>  not affected.
> ```
> 
> 


#### 1.6.3 删除git内的文件


**命令说明:**



> 
> • 没有添加到暂存区的数据直接rm删除即可。
> 
> 
> • 已经添加到暂存区数据:
> 
> 
> git rm --cached database
> 
> 
> #→将文件从git暂存区域的追踪列表移除(并不会删除当前工作目录内的数据文件)
> 
> 
> git rm -f database
> 
> 
> #→将文件数据从git暂存区和工作目录一起删除
> 
> 
> 


**命令实践:**



# 创建新文件



[root@gitlab git_data]# touch 123
 [root@gitlab git_data]# git status
 # 位于分支 master
 # 未跟踪的文件:
 #   (使用 “git add …” 以包含要提交的内容)
 #
 #   123
 提交为空,但是存在尚未跟踪的文件(使用 “git add” 建立跟踪)
 —
 # On branch master
 # Untracked files:
 #   (use “git add …” to include in what will be committed)
 #
 #       123
 nothing added to commit but untracked files present (use “git add” to track)


# 将文件添加到暂存区域



[root@gitlab git_data]# git add 123
 [root@gitlab git_data]# git status
 # 位于分支 master
 # 要提交的变更:
 #   (使用 “git reset HEAD …” 撤出暂存区)
 #
 #   新文件:   123
 —
 # On branch master
 # Changes to be committed:
 #   (use “git reset HEAD …” to unstage)
 #
 #       new file:   123


# 删除文件



[root@gitlab git_data]# rm 123 -f
 [root@gitlab git_data]# ls
 README
 [root@gitlab git_data]# git status
 # 位于分支 master
 # 要提交的变更:
 #   (使用 “git reset HEAD …” 撤出暂存区)
 #
 #   新文件:   123
 #
 # 尚未暂存以备提交的变更:
 #   (使用 “git add/rm …” 更新要提交的内容)
 #   (使用 “git checkout – …” 丢弃工作区的改动)
 #
 #   删除:     123
 #
 —
 # On branch master
 # Changes to be committed:
 #   (use “git reset HEAD …” to unstage)
 #
 #       new file:   123
 #
 # Changes not staged for commit:
 #   (use “git add/rm …” to update what will be committed)
 #   (use “git checkout – …” to discard changes in working directory)
 #
 #       deleted:   123
 [root@gitlab git_data]# git reset HEAD ./*
 [root@gitlab git_data]# git status
 # 位于分支 master
 无文件要提交,干净的工作区
 —
 # On branch master
 nothing to commit, working directory clean


#### 1.6.4 重命名暂存区数据



> 
> • 没有添加到暂存区的数据直接mv/rename改名即可。
> 
> 
> • 已经添加到暂存区数据:
> 
> 
> 
> ```
>  git mv README NOTICE
> ```
> 
> 
> ```
>  [root@gitlab git_data]# git mv README notice
>  [root@gitlab git_data]# git status
>  # On branch master
>  # Changes to be committed:
>  #   (use "git reset HEAD <file>..." to unstage)
>  #
>  #       renamed:    README -> notice
>  #
> ```
> 
> 



#### 1.6.5 查看历史记录



> 
> • git log #→查看提交历史记录
> 
> 
> • git log -2 #→查看最近几条记录
> 
> 
> • git log -p -1 #→-p显示每次提交的内容差异,例如仅查看最近一次差异
> 
> 
> • git log --stat -2 #→--stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息
> 
> 
> • git log --pretty=oneline #→--pretty根据不同的格式展示提交的历史信息
> 
> 
> • git log --pretty=fuller -2 #→以更详细的模式输出提交的历史记录
> 
> 
> • git log --pretty=fomat:"%h %cn" #→查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名。
> 
> 
> 


使用format参数来指定具体的输出格式




| **格式** | **说明** |
| --- | --- |
| **%s** | 提交说明。 |
| **%cd** | 提交日期。 |
| **%an** | 作者的名字。 |
| **%cn** | 提交者的姓名。 |
| **%ce** | 提交者的电子邮件。 |
| **%H** | 提交对象的完整SHA-1哈希字串。 |
| **%h** | 提交对象的简短SHA-1哈希字串。 |
| **%T** | 树对象的完整SHA-1哈希字串。 |
| **%t** | 树对象的简短SHA-1哈希字串。 |
| **%P** | 父对象的完整SHA-1哈希字串。 |
| **%p** | 父对象的简短SHA-1哈希字串。 |
| **%ad** | 作者的修订时间。 |


*命令实践*



[root@gitlab git_data]# git log
 commit f5b79552635a7dc60afc35c99c1170366d8c5f6b
 Author: newrain newrain@aliyun.com
 Date:   Sat May 11 21:29:21 2019 -0700
 ​
    456
 ​
 commit e9ed8b38a0052cdcd85ecee833ea8198b077f881
 Author: newrain root@vmdesk.localdomain
 Date:   Sat May 11 21:21:12 2019 -0700
 ​
    commit 123
 ​
 commit 9d394114177b8da9e452d001ec610e9c45ceede3
 Author: newrain root@vmdesk.localdomain
 Date:   Sat May 11 20:19:23 2019 -0700
 ​
    first commit


#### 1.6.6 还原历史数据



> 
> Git服务程序中有一个叫做HEAD的版本指针,当用户申请还原数据时,其实就是将HEAD指针指向到某个特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,故使用了SHA-1计算出十六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD^,上上一个版本则会叫做HEAD^^,当然一般会用HEAD~5来表示往上数第五个提交版本。
> 
> 
> 



> 
> git reset --hard hash
> 
> 
> git reset --hard HEAD^ #→还原历史提交版本上一次
> 
> 
> git reset --hard 3de15d4 #→找到历史还原点的SHA-1值后,就可以还原(值不写全,系统
> 
> 
> 会自动匹配)
> 
> 
> 


*测试命令*



[root@gitlab git_data]# git log
 commit f5b79552635a7dc60afc35c99c1170366d8c5f6b
 Author: newrain newrain@aliyun.com
 Date:   Sat May 11 21:29:21 2019 -0700
 ​
    456
 ​
 commit e9ed8b38a0052cdcd85ecee833ea8198b077f881
 Author: newrain root@vmdesk.localdomain
 Date:   Sat May 11 21:21:12 2019 -0700
 ​
    commit 123
 ​
 commit 9d394114177b8da9e452d001ec610e9c45ceede3
 Author: newrain root@vmdesk.localdomain
 Date:   Sat May 11 20:19:23 2019 -0700
 ​
    first commit




还原数据



[root@gitlab git_data]# git reset --hard e9ed8b38a
 HEAD is now at e9ed8b3 commit 123
 HEAD 现在位于 e9ed8b3 commit 123
 # 查看数据
 [root@gitlab git_data]# ls
 123 README


#### 1.6.7 还原未来数据


什么是未来数据?就是你还原到历史数据了,但是你后悔了,想撤销更改,但是git log已经找不到这个版本了。


git reflog #→查看未来历史更新点


*测试命令*



[root@gitlab git_data]# git reflog
 e9ed8b3 HEAD@{0}: reset: moving to e9ed8b38a
 f5b7955 HEAD@{1}: commit: 456
 e9ed8b3 HEAD@{2}: commit: commit 123
 9d39411 HEAD@{3}: commit (initial): first commit
 [root@gitlab git_data]#


#### 1.6.8 标签使用


前面回滚使用的是一串字符串,又长又难记。



> 
> git tag v1.0 #→当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。
> 
> 
> git tag #→查看当前所有的标签
> 
> 
> git show v1.0 #→查看当前1.0版本的详细信息
> 
> 
> git tag v1.2 -m "version 1.2 release is test" #→创建带有说明的标签,-a指定标签名字,-m指定说明文字
> 
> 
> git tag -d v1.0 #→我们为同一个提交版本设置了两次标签,删除之前的v1.0
> 
> 
> 


*测试命令*



[root@gitlab git_data]# git reset --hard e9ed8b38a
 HEAD is now at e9ed8b3 commit 123
 [root@gitlab git_data]# git reset --hard V1.0
 HEAD is now at e9ed8b3 add test dir
 ​
 [root@gitlab git_data]# git tag v20171129
 [root@gitlab git_data]# git tag
 v20171129


#### 1.6.9 对比数据



> 
> git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改
> 
> 
> 后,再把它提交到仓库就放⼼多了。
> 
> 
> 
> ```
>  git diff README
>  git diff --name-only HEAD HEAD^
>  git diff --name-only head_id head_id2
> ```
> 
> 


### 1.7 分支结构


在实际的项目开发中,尽量保证master分支稳定,仅用于发布新版本,平时不要随便直接修改里面的数据文件。


那在哪干活呢?干活都在dev分支上。每个人从dev分支创建自己个人分支,开发完合并到dev分支,最后dev分支合并到master分支。所以团队的合作分支看起来会像下图那样。



![1190037-20171130171522167-746209354.png](https://img-blog.csdnimg.cn/img_convert/56673488c29c7fe109ea92b6a40ed17b.png)


#### 1.7.1 分支切换



[root@gitlab git_data]# git branch newrain
 [root@gitlab git_data]# git branch
 * master
  newrain
 [root@gitlab git_data]# git checkout newrain
 切换到分支 ‘newrain’
 Switched to branch ‘newrain’
 [root@gitlab git_data]# git branch
  master
 * newrain


**在newrain** **分支进行修改**



[root@gitlab git_data]# cat README
 This is git_data readme
 [root@gitlab git_data]# echo ‘1901’ >> README
 [root@gitlab git_data]# git add .
 [root@gitlab git_data]# git commit -m ‘1901’
 [newrain 4310e7e] 1901
  1 file changed, 1 insertion(+)
 [root@gitlab git_data]# git status
 # On branch newrain
 nothing to commit, working directory clean
 —
 # 位于分支 newrain
 无文件要提交,干净的工作区


**回到master分支**



[root@gitlab git_data]# git checkout master
 Switched to branch ‘master’
 切换到分支 ‘master’
 [root@gitlab git_data]# cat README
 This is git_data readme
 [root@gitlab git_data]# git log -1
 commit f5b79552635a7dc60afc35c99c1170366d8c5f6b
 Author: newrain newrain@aliyun.com
 Date:   Sat May 11 21:29:21 2019 -0700
 ​
    456



**合并代码**



[root@gitlab git_data]# git merge newrain
 Updating f5b7955…4310e7e
 Fast-forward
  README | 1 +
  1 file changed, 1 insertion(+)
 [root@gitlab git_data]# git status
 # On branch master
 nothing to commit, working directory clean
 # 位于分支 master
 无文件要提交,干净的工作区
 [root@gitlab git_data]# cat README
 This is git_data readme
 1901


#### 1.7.2 合并失败解决


*模拟冲突,在文件的同一行做不同修改*


**在master** **分支进行修改**



[root@gitlab git_data]# cat README
 This is git_data readme
 1901
 [root@gitlab git_data]# echo ‘1901-git’ > README
 [root@gitlab git_data]# git commit -m ‘newrain 1901-git’
 [master 4e6c548] newrain 1901-git
  1 file changed, 1 insertion(+), 2 deletions(-)


**切换到newrain分支**



[root@gitlab git_data]# git checkout newrain
 Switched to branch ‘newrain’
 [root@gitlab git_data]# cat README
 This is git_data readme
 1901
 [root@gitlab git_data]# echo ‘newrain’ >> README
 [root@gitlab git_data]# git commit -m ‘1901-git-check’
 # On branch newrain
 # Changes not staged for commit:
 #   (use “git add …” to update what will be committed)
 #   (use “git checkout – …” to discard changes in working directory)
 #
 #       modified:   README
 #
 no changes added to commit (use “git add” and/or “git commit -a”)




**回到master分区,进行合并,出现冲突**



[root@gitlab git_data]# git checkout master
 切换到分支 ‘master’
 [root@gitlab git_data]# git merge linux
 自动合并 README
 冲突(内容):合并冲突于 README
 自动合并失败,修正冲突然后提交修正的结果。


**解决冲突**



[root@gitlab git_data]# vim README
 This is git_data readme
 1901
 newrain
 meger test ti
 meger test master


*#* *手工解决冲突*



[root@gitlab git_data]# git commit -a -m “merge-ti-test”
 [master 2594b2380] merge-ti-test


#### 1.7.3 删除分支



> 
> 因为之前已经合并了newrain分支,所以现在看到它在列表中。 在这个列表中分支名字前没有 \* 号的分支通常可以使用 git branch -d 删除掉;你已经将它们的工作整合到了另一个分支,所以并不会失去任何东西。
> 
> 
> 


查看所有包含未合并工作的分支,可以运行 *git branch --no-merged\*\*:*



> 
> 
> ```
>  git branch --no-merged
>    testing
> ```
> 
> 


这里显示了其他分支。 因为它包含了还未合并的工作,尝试使用 git branch -d 命令删除它时会失败:



> 
> 
> ```
>  git branch -d testing
>  error: The branch 'testing' is not fully merged.
>  If you are sure you want to delete it, run 'git branch -D testing'. 
> ```
> 
> 


如果真的想要删除分支并丢掉那些工作,如同帮助信息里所指出的,可以使用 **-D** 选项强制删除它。


### 1.9 gitlab的使用


前面我们已经知道Git人人都是中心,那他们怎么交互数据呢?


• 使用**GitHub**或者**码云**等公共代码仓库


• 使用GitLab私有仓库


#### 1.9.1 安装配置gitlab


**安装**



# 安装依赖,并启动ssh、防火墙开启相应端口、postfix



[root@gitlab ~]# yum install -y curl policycoreutils-python openssh-server perl



# 安装完成后会直接启动



[root@gitlab ~]# yum install gitlab-jh-16.0.3-jh.0.el7.x86_64.rpm


初始化



# 以下两种方法都可以配置访问地址,第一种需要在yum安装前配置



[root@gitlab ~]# export EXTERNAL_URL=‘http://192.168.249.156’
 或
 [root@gitlab ~]# vim /etc/gitlab/gitlab.rb
 external_url ‘http://192.168.249.156’
 [root@gitlab ~]# gitlab-ctl reconfigure


状态



[root@gitlab ~]# gitlab-ctl status
 run: gitaly: (pid 4491) 48s; run: log: (pid 4087) 279s
 run: gitlab-monitor: (pid 4539) 44s; run: log: (pid 4251) 207s
 run: gitlab-workhorse: (pid 4501) 47s; run: log: (pid 4099) 273s
 run: logrotate: (pid 4125) 265s; run: log: (pid 4124) 265s
 run: nginx: (pid 4112) 271s; run: log: (pid 4111) 271s
 run: node-exporter: (pid 4175) 243s; run: log: (pid 4174) 243s
 run: postgres-exporter: (pid 4528) 45s; run: log: (pid 4223) 219s
 run: postgresql: (pid 3933) 343s; run: log: (pid 3932) 343s
 run: prometheus: (pid 4514) 46s; run: log: (pid 4156) 259s
 run: redis: (pid 3876) 355s; run: log: (pid 3875) 355s
 run: redis-exporter: (pid 4186) 237s; run: log: (pid 4185) 237s
 run: sidekiq: (pid 4078) 281s; run: log: (pid 4077) 281s
 run: unicorn: (pid 4047) 287s; run: log: (pid 4046) 287s


检查端口



[root@gitlab ~]# netstat -lntup|grep 80
 tcp       0     0 127.0.0.1:8080     0.0.0.0:*   LISTEN     4073/unicorn master
 tcp       0     0 0.0.0.0:80     0.0.0.0:*         LISTEN     4112/nginx: master  
 tcp       0     0 0.0.0.0:8060       0.0.0.0:*     LISTEN     4112/nginx: master




#### 1.9.2 使用浏览器访问,进行web界面操作


有可能会遇到下列问题,不要慌


解决方法:



yum -y install fontconfig


![](https://img-blog.csdnimg.cn/direct/61570eb0197f429ca97968f1b38cfc76.png)


登陆 Gitlab



![1](https://img-blog.csdnimg.cn/img_convert/1391a2e66b86ed5176b83bef493caac9.png)


**如果需要手工修改nginx的port ,可以在gitlab.rb中设置 nginx['listen\_port'] = 8000 ,然后再次 gitlab-ctl reconfigure即可**


**登录 gitlab 如下所示(首次登陆设置 root 密码):**



> 
> 密码存放在 /etc/gitlab/initial\_root\_password 文件中,该文件会在24小时后删除
> 
> 
> 



![1](https://img-blog.csdnimg.cn/img_convert/76835952e0a0c71375ff5fb904f3a029.png)


**创建项目组 group ,组名为plat-sp ,如下所示:** 


![1](https://img-blog.csdnimg.cn/img_convert/9b23c30005fdf33fc76bb658b4488759.png)



![1](https://img-blog.csdnimg.cn/img_convert/7a475791551e9abe51ca52cbdd89e6f4.png)


**去掉用户的自动注册功能(安全):** admin are -> settings -> Sign-up Restrictions 去掉钩钩,然后拉到最下面保存,重新登录


![1](https://img-blog.csdnimg.cn/img_convert/767451c16ed888337543405dff38c689.png)


在服务器上创建ssh密钥 使用ssh-ketgen 命令



[root@gitlab ~]# 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:
 SHA256:n/V2kCiwwm2UfBsnQLm17eXUCBiBByyPbefmz5oQvfU root@gitlab
 The key’s randomart image is:
 ±–[RSA 2048]----+
 |       o++o+     |
 |     …+o+ .   |
 |       ++o… o |
 |     …o
o=…+…|
 |     o.So+.++o |
 |       o oo*.o… |
 |       .o+   E .|
 |         …o . . |
 |         ooo   |
 ±—[SHA256]-----+
 [root@gitlab .ssh]# cat id_rsa.pub
 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSVdBypha/ALMmvIiZGXxYGz7FJ5TC+hYWo7QGBJ+J6JVinp9yH851fwxln5TWGBrtEousoVHXTTJfFRy8LV+Ho7OfaksYt+5TPxEjf5XX53Z3ZX70PYH3DQFmgzl0QpWw1PYIjrD7kBeLhUg+R/ZePS+HzPvbRCb6gOlkdx46vX4Olr7YbAO5lzAarhaZcE2Q702kPXGeuZbR7KcwVhtoiueyHwyj94bccMfKq7qSskXGbpWuCwcaKQ6uqGap1rP5Viqqv0xeO7Vq0dIZ/YnPL2vPDUvNa36nHosiZGkn4thpPh63KjXaFIfKOuPemLzvDZY0A+88P8gwmAYiPoxp root@gitlab


将密钥添加到web界面的用户中



![image-20210615215843063](https://img-blog.csdnimg.cn/img_convert/56dd1cda4524446c18d3ef350ab3456b.png)



![image-20210615220004937](https://img-blog.csdnimg.cn/img_convert/a89821afc3e7f0ab648bdbc0373c05d1.png)


#### 1.9.3 gitlab 命令行修改密码



gitlab-rails console -e production
 irb(main):001:0> user = User.where(id: 1).first     # id为1的是超级管理员
 irb(main):002:0> user.password = ‘yourpassword’     # 密码必须至少8个字符
 irb(main):003:0> user.save!                         # 如没有问题 返回true
 exit # 退出


#### 1.9.4 gitlab服务管理



gitlab-ctl start                       # 启动所有 gitlab 组件;
 gitlab-ctl stop                         # 停止所有 gitlab 组件;
 gitlab-ctl restart                     # 重启所有 gitlab 组件;
 gitlab-ctl status                       # 查看服务状态;
 gitlab-ctl reconfigure                 # 启动服务;
 vim /etc/gitlab/gitlab.rb               # 修改默认的配置文件;
 gitlab-ctl tail                         # 查看日志;



#### 1.9.5 公司的开发代码提交处理流程



> 
> PM(项目主管/项目经理)在gitlab创建任务,分配给开发人员 开发人员领取任务后,在本地使用git clone拉取代码库 开发人员创建开发分支(git checkout -b dev),并进行开发 开发人员完成之后,提交到本地仓库(git commit ) 开发人员在gitlab界面上申请分支合并请求(Merge request) PM在gitlab上查看提交和代码修改情况,确认无误后,确认将开发人员的分支合并到主分支(master) 开发人员在gitlab上Mark done确认开发完成,并关闭issue。这一步在提交合并请求时可以通过描述中填写"close #1"等字样,可以直接关闭issue
> 
> 
> 


**创建项目管理用户Tompson如下所示:**


![1](https://img-blog.csdnimg.cn/img_convert/75f698ccd3e79779447937b6def77b7c.png)


同样的方法,再创建Eric 、Hellen 用户。用户添加完毕后,gitlab会给用户发一封修改密码的邮件,各用户需要登录自己的邮箱,并点击相关的链接,设置新密码。


**将用户添加到组中,指定Tompson为本组的owner:**


![1](https://img-blog.csdnimg.cn/img_convert/ff5aacce26ead465e0540c7feb73b77b.png)


**同样的方法将用户Eric、Hellen也添加到组中,并指定他们为Developer:**


![1](https://img-blog.csdnimg.cn/img_convert/1d432ba8c024c38e49242986c8f34370.png)


**使用 Tompson 用户的身份与密码登录到 gitlab 界面中,并创建项目 Project ,如下所示:**


![1](https://img-blog.csdnimg.cn/img_convert/a79e9c29da9f80e114ac170a387c75ea.png)


**指定项目的存储路径和项目名称,如下所示**


![1](https://img-blog.csdnimg.cn/img_convert/9b93ffe2baefb3c2e7b4ee77f668794b.png)



![1](https://img-blog.csdnimg.cn/img_convert/a25a79d338c167a2944dce1fa1e0bf10.png)


**为项目创建Dev分支,如下所示:**


![1](https://img-blog.csdnimg.cn/img_convert/6045404478cf7ee5b09348c963d36346.png)



![1](https://img-blog.csdnimg.cn/img_convert/53a61611c9cb942261e4bfb02e40f874.png)


**在 client 上添加Tompson的用户:**





[root@vm2 ~]# useradd Tompson
 [root@vm2 ~]# useradd Eric
 [root@vm2 ~]# useradd Hellen
 [root@vm2 ~]# su - Tompson
 [Tompson@vm2 ~]$ ssh-keygen -C Tompson@domain.cn
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/Tompson/.ssh/id_rsa):
 Created directory ‘/home/Tompson/.ssh’.
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /home/Tompson/.ssh/id_rsa.
 Your public key has been saved in /home/Tompson/.ssh/id_rsa.pub.
 The key fingerprint is:
 SHA256:SAoAH2zSxqEJqVgKKrxM5XMi6tKe61JMRdwMhwBNIrE Tompson@domain.cn
 The key’s randomart image is:
 ±–[RSA 2048]----+
 |XX==o=.         |
 |BOo+.o         |
 |E
=. .         |
 |*+.= + .         |
 |=oo = . S       |
 |.oo             |
 |.o               |
 |o…             |
 |.+=.             |
 ±—[SHA256]-----+
 [Tompson@vm2 ~]$ cat .ssh/id_rsa.pub
 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ8cRGHej+sZzlmK36W5MUXMLOGdTwFI9Jj44mGuabZCrlYW4GDpL6ppezN+Sur0wHtnKonYJzm8ntqS0S0UHyaPPQPl9Mrs/6Z4VrXZ/4RlqHdWeSrmOwCBQld0l8HvrmP4TyGHrOreO8uZqimd/Z+OiMqnYRZzENX11Pti/Px5g1MtJcoCi9uLtF42QYrt1X/fzAyPU9C5/5ZUq4Jln3EF20bzcA52oAzZIl0jrhI0TeTeW6zYq+KxdHGshL+qG7+Ne+akPOe4Ma5BQjcMZ2dQ2kbGuozXmLT8RDcj9YRKceQsUdTI71lJpwrWKGn8Vhra0EaK3hgoTuvMYaGfOF Tompson@domain.cn


**将Tompson的公钥复制到gitlab中: 使用Tompson用户的身份与密码登录到gitlab界面中,然后在ssh-key中添加 相关的key ,如下所示:**


![1](https://img-blog.csdnimg.cn/img_convert/a4f67e769e89d9a8552f992fef1b4302.png)



![1](https://img-blog.csdnimg.cn/img_convert/e94787475b2bf967c8c8e693ff6df597.jpeg)


**为Tompson用户配置git ,如下所示:**



[Tompson@vm2 ~]$ git config --global user.email “Tompson@domain.cn”
 [Tompson@vm2 ~]$ git config --global user.name “Tompson”
 ​
 [Tompson@vm2 ~]$ git clone git@192.168.60.119:plat-sp/chathall.git
 Cloning into ‘chathall’…
 The authenticity of host ‘192.168.60.119 (192.168.60.119)’ can’t be established.
 ECDSA key fingerprint is SHA256:CDxAQmj6gUkIxB6XUofbZ853GuPM5LS2QO4a5dD7jRo.
 ECDSA key fingerprint is MD5:4e:20:72:a7:46:c6:d7:5d:bb:9d:ce:c3:f3:da:43:f9.
 Are you sure you want to continue connecting (yes/no)? yes
 Warning: Permanently added ‘192.168.60.119’ (ECDSA) to the list of known hosts.
 remote: Counting objects: 3, done.
 remote: Total 3 (delta 0), reused 0 (delta 0)
 Receiving objects: 100% (3/3), done.
 [Tompson@vm2 ~]$
 [Tompson@vm2 ~]$ cd chathall/
 [Tompson@vm2 chathall]$ ls
 Readme.txt
 [Tompson@vm2 chathall]$


**创建一下新文件,添加内容,并提交到master分支:**



[Tompson@vm2 chathall]$ vim test.sh
 [Tompson@vm2 chathall]$ cat test.sh
 #!/bin/bash
 echo “gitlab test”
 [Tompson@vm2 chathall]$ git add .
 [Tompson@vm2 chathall]$ git commit -m ‘201805101649’
 [master 80edf6b] 201805101649
  1 file changed, 2 insertions(+)
  create mode 100644 test.sh
 [Tompson@vm2 chathall]$
 [Tompson@vm2 chathall]$ git push -u origin master
 Counting objects: 4, done.
 Compressing objects: 100% (2/2), done.
 Writing objects: 100% (3/3), 305 bytes | 0 bytes/s, done.
 Total 3 (delta 0), reused 0 (delta 0)
 To git@192.168.60.119:plat-sp/chathall.git
    4611654…80edf6b master -> master
 Branch master set up to track remote branch master from origin.
 [Tompson@vm2 chathall]$


**使用Eric用户登录,并clone 项目,如下所示:**



[root@vm2 ~]# su - Eric
 [Eric@vm2 ~]$ ssh-keygen -C Eric@domain.cn
 Generating public/private rsa key pair.
 Enter file in which to save the key (/home/Eric/.ssh/id_rsa):
 Created directory ‘/home/Eric/.ssh’.
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /home/Eric/.ssh/id_rsa.
 Your public key has been saved in /home/Eric/.ssh/id_rsa.pub.
 The key fingerprint is:
 SHA256:VZaJvjA5SJZEB+yuRpDBNHCECCZ5R8X0DYcNE0f1B6E Eric@domain.cn
 The key’s randomart image is:
 ±–[RSA 2048]----+
 |O=…Bo**+o+oo. |
 |*.+… *o.*oooo . |
 | . + + …oo E . .|
 | o   o =…   . |
 |   . . S+ .     |
 |   . .   .     |
 |   . .           |
 |   o           |
 |   .             |
 ±—[SHA256]-----+
 ​
 [Eric@vm2 ~]$ cat .ssh/id_rsa.pub
 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDxQcn4UjRW/5PT5witeV9+S2w8WK5ouawHxEF7s9wuWsT4pqhcu5BN74NG3CPaq1jJZnkV+aQsTw+60BAd1gOK0FBbKWxmohmE61n9vfpUT5igJ72t2jpXjfKwLIHw+Iq5yM4yUhkwSsoBuZkxYSEltnj8OvXaOlCDYnXuGBa9+xO8f5yVIcOtiwRvv+Y1PRRzSIcazPVZax9FLK26t1R4NPiY4xWkIJyK2OrKMeiaBBzyMfWzHdmsCWa51oSrYSmz3PDBXpzIBs3OdKxcaJs9Lc5u87YCV5RMUjLrPcA7nPK6crOabLXhz3d5GSYggMTOByQkyKOo7WlYpARCHOt/ Eric@domain.cn
 [Eric@vm2 ~]$


**同样需要使用Eric用户登录gitlab web 界面,并添加相应的ssh-key。然后设置git ,并clone项目:**



[Eric@vm2 ~]$ git config --global user.email “Eric@domain.cn”
 [Eric@vm2 ~]$ git config --global user.name “Eric”
 [Eric@vm2 ~]$ git clone git@192.168.60.119:plat-sp/chathall.git
 Cloning into ‘chathall’…
 The authenticity of host ‘192.168.60.119 (192.168.60.119)’ can’t be established.
 ECDSA key fingerprint is SHA256:CDxAQmj6gUkIxB6XUofbZ853GuPM5LS2QO4a5dD7jRo.
 ECDSA key fingerprint is MD5:4e:20:72:a7:46:c6:d7:5d:bb:9d:ce:c3:f3:da:43:f9.
 Are you sure you want to continue connecting (yes/no)? yes
 remote: Counting objects: 6, done.
 remote: Compressing objects: 100% (3/3), done.
 remote: Total 6 (delta 0), reused 0 (delta 0)
 Receiving objects: 100% (6/6), done.
 [Eric@vm2 ~]$


**切换到dev分支,修改文件内容,并将新code提交到dev分支(Developer角色默认并没有提交master的权限):**



[Eric@vm2 chathall]$ git checkout dev
 Branch dev set up to track remote branch dev from origin.
 Switched to a new branch ‘dev’
 [Eric@vm2 chathall]$ ls
 Readme.txt test.sh
 [Eric@vm2 chathall]$ vim test.sh
 [Eric@vm2 chathall]$ cat test.sh
 #!/bin/bash
 echo “gitlab test”
 echo “brahch test”
 [Eric@vm2 chathall]$ git add .
 [Eric@vm2 chathall]$ git commit -m ‘201805101658’
 [dev 6687039] 201805101658
  1 file changed, 1 insertion(+)
 [Eric@vm2 chathall]$ git push -u origin dev
 Counting objects: 5, done.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 306 bytes | 0 bytes/s, done.
 Total 3 (delta 0), reused 0 (delta 0)
 remote:
 remote: To create a merge request for dev, visit:
 remote:   http://192.168.60.119/plat-sp/chathall/merge_requests/new?merge_request%5Bsource_branch%5D=dev
 remote:
 To git@192.168.60.119:plat-sp/chathall.git
    80edf6b…6687039 dev -> dev
 Branch dev set up to track remote branch dev from origin.
 [Eric@vm2 chathall]$
 [Eric@vm2 chathall]$ git checkout master
 Switched to branch ‘master’
 [Eric@vm2 chathall]$ git branch
  dev
 * master
 [Eric@vm2 chathall]$


**使用Eric 用户登录gitlab web,在界面中 创建一个合并请求:**


![1](https://i-blog.csdnimg.cn/blog_migrate/aea54ea7bc3a65a79653e8c0e392aeb2.png)


**提交合并请求:**


![1](https://i-blog.csdnimg.cn/blog_migrate/6fe1cfab4b24761446e4f62476bbafeb.jpeg)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)**
![img](https://img-blog.csdnimg.cn/img_convert/d723b1c378ea8d8d1f47267449a0f18d.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

rtion(+)
 [Eric@vm2 chathall]$ git push -u origin dev 
 Counting objects: 5, done.
 Compressing objects: 100% (3/3), done.
 Writing objects: 100% (3/3), 306 bytes | 0 bytes/s, done.
 Total 3 (delta 0), reused 0 (delta 0)
 remote: 
 remote: To create a merge request for dev, visit:
 remote:   http://192.168.60.119/plat-sp/chathall/merge_requests/new?merge_request%5Bsource_branch%5D=dev
 remote: 
 To git@192.168.60.119:plat-sp/chathall.git
    80edf6b..6687039  dev -> dev
 Branch dev set up to track remote branch dev from origin.
 [Eric@vm2 chathall]$
 [Eric@vm2 chathall]$ git checkout master 
 Switched to branch 'master'
 [Eric@vm2 chathall]$ git branch 
   dev
 * master
 [Eric@vm2 chathall]$

使用Eric 用户登录gitlab web,在界面中 创建一个合并请求:

1

提交合并请求:

1

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-3JmuH8h4-1713287655395)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐