当前位置:   article > 正文

Git详解及github与gitlab使用_github gitlab

github gitlab

目录

一、Git简介

1、Git历史

2、安装Git

2.1、环境说明

2.2、yum安装Git

2.2.1、安装方法

2.3、初次运行Git前的配置

2.3.1、配置git

2.3.2、配置过程

2.3.3、生成的配置文件

 2.3.4获取git帮助

3、获取Git仓库

3.1、创建裸库

3.2、创建本地库

3.3、Git命令常规操作

3.4、常用操作示意图

 3.4.1、创建文件

3.4.2、添加文件跟踪

3.4.3、由工作区提交到本地仓库

3.4.4、查看git的状态

3.4.5、添加新文件

3.4.6、删除文件

4、分支结构

4.1、分支切换​​​​​​​

4.2、在newrain分支进行修改

4.3、回到master分支

4.4、合并代码

4.5、删除分支

二·、gitlab的使用

1、安装配置gitlab

2、测试访问

3、创建群组

4、 创建用户

5、克隆代码仓库

6、参考文档


一、Git简介

  git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。

Git 官方中文手册 Git - Book

1、Git历史

自2002年开始,林纳斯·托瓦兹决定使用BitKeeper作为Linux内核主要的版本控制系统用以维护代码。因为BitKeeper为专有软件,这个决定在社区中长期遭受质疑。在Linux社区中,特别是理查德·斯托曼与自由软件基金会的成员,主张应该使用开放源代码的软件来作为Linux核心的版本控制系统。林纳斯·托瓦兹曾考虑过采用现成软件作为版本控制系统(例如Monotone),但这些软件都存在一些问题,特别是性能不佳。现成的方案,如CVS的架构,受到林纳斯·托瓦兹的批评。

2005年,安德鲁·垂鸠写了一个简单程序,可以连接BitKeeper的存储库,BitKeeper著作权拥有者拉里·麦沃伊认为安德鲁·垂鸠对BitKeeper内部使用的协议进行逆向工程,决定收回无偿使用BitKeeper的授权。Linux内核开发团队与BitMover公司进行蹉商,但无法解决他们之间的歧见。林纳斯·托瓦兹决定自行开发版本控制系统替代BitKeeper,以十天的时间,编写出第一个git版本。

2、安装Git

2.1、环境说明

  1. [root@git ~]# rpm -qa centos-release
  2. centos-release-7-4.1708.el7.centos.x86_64
  3. [root@git ~]# uname -a
  4. Linux gitlab 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  5. [root@git ~]# getenforce
  6. Disabled
  7. [root@git ~]# systemctl status firewalld.service
  8. ● firewalld.service - firewalld - dynamic firewall daemon
  9. Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
  10. Active: inactive (dead)
  11. Docs: man:firewalld(1)

本文使用的linux系统均为该系统

2.2、yum安装Git

2.2.1、安装方法

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

2.3、初次运行Git前的配置

2.3.1、配置git

命令集

  1. git config --global user.name "username" #配置git使用用户
  2. git config --global user.email "email@mail.com" #配置git使用邮箱
  3. git config --global color.ui true #语法高亮
  4. git config --list # 查看全局配置

2.3.2、配置过程

  1. [root@gitlab ~]# git config --global user.name "newrain" #配置git使用用户
  2. [root@gitlab ~]# git config --global user.email "newrain@aliyun.com" #配置git使用邮箱
  3. [root@gitlab ~]# git config --global color.ui true #语法高亮
  4. [root@gitlab ~]# git config --list # 查看全局配置
  5. user.name=newrain
  6. user.mail=newrain@aliyun.com
  7. color.ui=true

2.3.3、生成的配置文件

  1. [root@gitlab ~]# cd
  2. [root@gitlab ~]# cat .gitconfig
  3. [user]
  4. name = newrain
  5. email = newrain@aliyun.com
  6. [color]
  7. ui = true

 2.3.4获取git帮助

git-help

git --help

man git

3、获取Git仓库

3.1、创建裸库

  1. [root@gitlab ~]# useradd git
  2. [root@gitlab ~]# passwd git
  3. [root@gitlab ~]# mkdir /git-root/
  4. [root@gitlab ~]# cd /git-root/
  5. [root@gitlab git-root]# git init --bare shell.git
  6. Initialized empty Git repository in /git-root/shell.git/
  7. [root@gitlab git-root]# chown -R git:git shell.git

3.2、创建本地库

  1. [root@gitlab opt]# ssh-keygen
  2. [root@gitlab opt]# ssh-copy-id git@192.168.249.156
  3. [root@gitlab opt]# git clone git@192.168.249.156:/git-root/shell.git
  4. [root@gitlab opt]# ls
  5. rh shell
  6. [root@gitlab opt]# cd shell/
  7. [root@gitlab shell]# vim test1.sh
  8. [root@gitlab shell]# git add test1.sh
  9. [root@gitlab shell]# git commit -m 'first commit'
  10. [master (root-commit) 33c5fbf] first commit
  11. 1 file changed, 2 insertions(+)
  12. create mode 100644 test1.sh
  13. [root@gitlab shell]# git push origin master
  14. Counting objects: 3, done.
  15. Writing objects: 100% (3/3), 230 bytes | 0 bytes/s, done.
  16. Total 3 (delta 0), reused 0 (delta 0)
  17. To git@192.168.1.102:/git-root/shell.git
  18. * [new branch] master -> master
  19. [root@gitlab shell]#

3.3、Git命令常规操作

命令命令说明
#add添加文件内容至索引
bisect通过二分查找定位引入 bug 的变更
#branch列出、创建或删除分支
#checkout检出一个分支或路径到工作区
#clone克隆一个版本库到一个新目录
#commit记录变更到版本库
#diff显示提交之间、提交和工作区之间等的差异
fetch从另外一个版本库下载对象和引用
grep输出和模式匹配的行
#init创建一个空的
#log显示提交日志
#merge合并两个或更多开发历史
#mv移动或重命名一个文件、目录或符号链接
#pull获取并合并另外的版本库或一个本地分支
#push更新远程引用和相关的对象
rebase本地提交转移至更新后的上游分支中
#reset重置当前HEAD到指定状态
#rm从工作区和索引中删除文件
show显示各种类型的对象
#status显示工作区状态
#tag创建、列出、删除或校验一个GPG签名的 tag 对象

3.4、常用操作示意图

 3.4.1、创建文件

[root@gitlab git_data]# touch README

3.4.2、添加文件跟踪

[root@gitlab git_data]# git add ./*

3.4.3、由工作区提交到本地仓库

  1. [root@gitlab git_data]# git commit -m 'first commit'
  2. [master(根提交) bb963eb] first commit
  3. 1 file changed, 0 insertions(+), 0 deletions(-)
  4. create mode 100644 README

3.4.4、查看git的状态

[root@gitlab git_data]# git status

3.4.5、添加新文件

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

3.4.6、删除文件

  1. [root@gitlab git_data]# rm 123 -f
  2. [root@gitlab git_data]# ls
  3. README

4、分支结构

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

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

4.1、分支切换

  1. [root@gitlab git_data]# git branch newrain
  2. [root@gitlab git_data]# git branch
  3. * master
  4. newrain
  5. [root@gitlab git_data]# git checkout newrain
  6. 切换到分支 'newrain'
  7. Switched to branch 'newrain'
  8. [root@gitlab git_data]# git branch
  9. master
  10. * newrain

4.2、在newrain分支进行修改

  1. [root@gitlab git_data]# cat README
  2. This is git_data readme
  3. [root@gitlab git_data]# echo '1901' >> README
  4. [root@gitlab git_data]# git add .
  5. [root@gitlab git_data]# git commit -m '1901'
  6. [newrain 4310e7e] 1901
  7. 1 file changed, 1 insertion(+)
  8. [root@gitlab git_data]# git status
  9. # On branch newrain
  10. nothing to commit, working directory clean
  11. ---
  12. # 位于分支 newrain
  13. 无文件要提交,干净的工作区

4.3、回到master分支

  1. [root@gitlab git_data]# git checkout master
  2. Switched to branch 'master'
  3. 切换到分支 'master'
  4. [root@gitlab git_data]# cat README
  5. This is git_data readme
  6. [root@gitlab git_data]# git log -1
  7. commit f5b79552635a7dc60afc35c99c1170366d8c5f6b
  8. Author: newrain <newrain@aliyun.com>
  9. Date: Sat May 11 21:29:21 2019 -0700
  10. 456

4.4、合并代码

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

4.5、删除分支

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

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

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

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

二·、gitlab的使用

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

1、安装配置gitlab

yum安装

  1. # 安装依赖,并启动ssh、防火墙开启相应端口、postfix
  2. [root@gitlab ~]# yum install -y curl policycoreutils-python openssh-server perl
  3. # 安装完成后会直接启动
  4. [root@gitlab ~]# yum install gitlab-jh-16.0.3-jh.0.el7.x86_64.rpm

初始化

  1. # 以下两种方法都可以配置访问地址,第一种需要在yum安装前配置
  2. [root@gitlab ~]# export EXTERNAL_URL='http://192.168.249.156'
  3. [root@gitlab ~]# vim /etc/gitlab/gitlab.rb
  4. external_url 'http://192.168.249.156'
  5. [root@gitlab ~]# gitlab-ctl reconfigure

查看状态

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

检查端口

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

2、测试访问

http://192.168.18.150

注意:首次登录用户名是root 密码在 /etc/gitlab/initial_root_password文件里面。

3、创建群组

4、 创建用户

注意:在这里创建好用户记得给他们设置密码,并且将他们邀请到群组里面。 

 创建目录前端和后端,里面写项目就可以了。

 5、克隆代码仓库

用http克隆代码

 接下来我们打开vscode创建文件

 创建分支master

 接下来回到我们的git项目,创建合并请求即可。

 这是我们刚才创建的master分支

 合并分支

出现图中的信息,那么我们的分支就合并成功了。

6、参考文档

猴子都能懂的GIT Simple Git tutorial for beginners | NulabStart using Git for version control with your teamicon-default.png?t=N7T8https://backlog.com/git-tutorial/cn/

Pro Git书籍 Git - Bookicon-default.png?t=N7T8https://git-scm.com/book/zh/v2

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/490349
推荐阅读
相关标签
  

闽ICP备14008679号