赞
踩
Git 是一种分布式版本控制系统,用于跟踪和管理代码的变更。它是由
Linus Torvalds 创建的,最初被设计用于 Linux 内核的开发。Git 允许开发
人员跟踪和管理代码的版本,并且可以在不同的开发人员之间进行协作。
Github 用的就是 Git 系统来管理它们的网站,Github 是一个社区,Git 是
一个服务系统,Github 只支持 Git 分布式系统,所以故名成为 Github。
Git 的主要功能包括:
1. 版本控制:Git 可以跟踪代码的变更,并且可以回滚到任何一个版本。
2. 分支管理:Git 支持多个分支,可以让不同的开发人员在不同的分支上
进行开发,然后再合并到主分支上。
3. 分布式:Git 是分布式的,意味着每个开发者都可以在自己的本地分支
上进行操作,不需要依赖于中央服务器。
4. 团队协作:Git 支持多人协作,可以让不同的开发人员在同一个项目上
进行协作。
5. 使用 Git 进行版本控制可以提高开发效率,减少代码冲突,并且可以更
好地管理代码变更。
GitLab 是一个基于 Git 的项目管理软件用于仓库管理系统的开源项目。使
用 Git 作为代码管理工具,并在此基础上搭建起来 Web 服务。
GitLab 主要针对软件开发过程中产生的代码和文档进行管理,支持 group
和 project 两个维度进行代码和文档的管理。其中,group 是群组,可以有
多个 project;project 是工程项目,一个 project 中可能包含多个
branch,意为每个项目中有多个分支,分支间相互独立,不同分支可以进
行归并。GitLab 一站式 DevOps 平台,加速和优化软件开发全生命周期。
- [root@YH1 ~]# yum -y install git
- 已安装:
- git-2.39.3-1.el8_8.x86_64 git-core-
- doc-2.39.3-1.el8_8.noarch
- perl-Error-1:0.17025-2.el8.noarch perl-Git-
- 2.39.3-1.el8_8.noarch
- perl-TermReadKey-2.37-7.el8.x86_64
- 完毕!
- [root@YH1 ~]# git # 直接输入git可通过提示查看到git的选项和
- 参数
- 用法:git [-v | --version] [-h | --help] [-C <path>] [-c
- <name>=<value>]
- [--exec-path[=<path>]] [--html-path] [--man-
- path] [--info-path]
- [-p | --paginate | -P | --no-pager] [--no-
- replace-objects] [--bare]
- [--git-dir=<path>] [--work-tree=<path>] [--
- namespace=<name>]
- [--super-prefix=<path>] [--config-env=<name>=
- <envvar>]
-
-
- <command> [<args>]
- 这些是各种场合常见的 Git 命令:
- 开始一个工作区(参见:git help tutorial)
- clone 克隆仓库到一个新目录
- init 创建一个空的 Git 仓库或重新初始化一个已存在的仓库
- 在当前变更上工作(参见:git help everyday)
- add 添加文件内容至索引
- mv 移动或重命名一个文件、目录或符号链接
- restore 恢复工作区文件
- rm 从工作区和索引中删除文件
- 检查历史和状态(参见:git help revisions)
- bisect 通过二分查找定位引入 bug 的提交
- diff 显示提交之间、提交和工作区之间等的差异
- grep 输出和模式匹配的行
- log 显示提交日志
- show 显示各种类型的对象
- status 显示工作区状态
- 扩展、标记和调校您的历史记录
- branch 列出、创建或删除分支
- commit 记录变更到仓库
- merge 合并两个或更多开发历史
- rebase 在另一个分支上重新应用提交
- reset 重置当前 HEAD 到指定状态
- switch 切换分支
- tag 创建、列出、删除或校验一个 GPG 签名的标签对象
- 协同(参见:git help workflows)
- fetch 从另外一个仓库下载对象和引用
- pull 获取并整合另外的仓库或一个本地分支
- push 更新远程引用和相关的对象
- 命令 'git help -a' 和 'git help -g' 显示可用的子命令和一些概念帮
- 助。
- 查看 'git help <命令>' 或 'git help <概念>' 以获取给定子命令或概
- 念的
-
-
- 帮助。
- 有关系统的概述,查看 'git help git'。

- [root@YH1 ~]# git config --global user.name "admin" #
- 配置用户名
- [root@YH1 ~]# git config --global user.email
- "yh123456@qq.com" # 配置邮箱
init:初始化当前目录为仓库,初始化后会自动将当前仓库设置为 master
创建本地仓库的条件是需要一个空目录,然后在空目录中初始化你的项目
- [root@YH1 ~]# mkdir /test # 创建一个空目录
- [root@YH1 ~]# cd /test/
- [root@YH1 test]# git init # 将当前空目录做为master仓库
- 提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。
- 要在新仓库中
- 提示:配置使用初始分支名,并消除这条警告,请执行:
- 提示:
- 提示: git config --global init.defaultBranch <名称>
-
- 提示:
- 提示:除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和
- 'development'。
- 提示:可以通过以下命令重命名刚创建的分支:
- 提示:
- 提示: git branch -m <name>
- 已初始化空的 Git 仓库于 /test/.git/
- [root@YH1 test]# ls -a # 查看git隐藏的相关的配置文件
- . .. .git
- [root@YH1 test]# cd .git/
- [root@YH1 .git]# ls
- branches config description HEAD hooks info objects
- refs

新建文件并添加到缓存
- [root@YH1 test]# touch test.c
- [root@YH1 test]# ls -a
- [root@YH1 test]# git add test.c
[root@YH1 test]# git commit -m "add new file "test.c"
[root@YH1 test]# git log
你可以使用以下命令切换到主分支:
- [root@YH1 ~]# cd /test # 先切换到之前创建master主分支
-
- [root@YH1 ~]# git checkout master # 确保当前操作位置是在主分
-
- 支上
[root@YH1 ~]# git branch feature-branch
这将创建一个名为"feature-branch"的新分支。
- [root@YH1 ~]# git checkout feature-branch
-
- [root@YH1 test]# git branch # 查看当前分支
-
- * feature-branch # 当前所在哪个分支,哪个分支前面有*号
-
- master
也可以使用如下命令直接创建并切换到"feature-branch"分支,-b 选项相当
于执行两条命令,git checkout 和 git branch。
- [root@YH1 ~]# git checkout -b feature-branch
-
- [root@YH1 test]# git branch # 跟上面的操作效果一样
-
- * feature-branch
-
- master
这两个操作都将切换到新创建的"feature-branch"分支。
[root@YH1 test]# vim test.c # 添加新内容
hello
test
[root@YH1 ~]# git add . # 提交到缓存区,这里也可以写
master分支的目录名,比如test
[root@YH1 ~]# git commit -m "提交消息" # 提交消息写清注释
信息即可
- [root@YH1 ~]# git checkout master
-
- [root@YH1 test]# git branch
-
- feature-branch
-
- * master
-
- [root@YH1 test]# cat test.c
# 刚才写入的内容没有了,是因为之前是在其他分支上操作的,并非在master
上
# 所以切换回master后,显示的内容只会是master分支上的内容
[root@YH1 ~]# git merge feature-branch
[root@YH1 test]# cat test.c # 合并完成,其他分支的内容被合并
到了master上
这将把你的"feature-branch"分支的更改合并到主分支上。如果存在冲突,
需要手动解决冲突。Git会在冲突的文件中标记出冲突的部分,你需要打开
这些文件并手动编辑以解决冲突。解决冲突后,你需要再次提交更改。
[root@YH1 ~]# git branch -d feature-branch
这将删除名为"feature-branch"的分支。如果你想强制删除分支(即使该分
支尚未合并),可以使用以下命令:
[root@YH1 ~]# git branch -D feature-branch
- [root@YH1 test]# git checkout -b y123 # 创建并切换到新分支
-
- 切换到一个新分支 'y123'
-
- [root@YH1 test]# vim test.c # 写入点内容
-
- hello
-
- test
-
- yyyy
-
- [root@YH1 test]# git add test.c # 将新分支写入的内容提交到
-
- 缓存
-
- [root@YH1 test]# git commit -m "yy" # 提交新分支并注释
-
- 为“yy”
-
- [y123 32e5a5a] yy
-
- 1 file changed, 1 insertion(+)

- [root@YH1 test]# git checkout master # 切换到主分支
-
- 切换到分支 'master'
-
- [root@YH1 test]# cat test.c # 此时还未合并,所以只显示当前
-
- master分支的内容
-
- hello
-
- test
-
- [root@YH1 test]# vim test.c # 向master分支内写入些内容
-
- hello
-
- test
-
- hhhh
-
- [root@YH1 test]# git add test.c # 提交master分支
-
- [root@YH1 test]# git commit -m "hh" # 正式提交,注释信息
-
- 为“hh”
-
- [master 4a51362] hh
-
- 1 file changed, 1 insertion(+)
-
- [root@YH1 test]# git merge y123 # 合并新分支
-
- 自动合并 test.c
-
- 冲突(内容):合并冲突于 test.c # 提示冲突了
-
- 自动合并失败,修正冲突然后提交修正的结果。
-
- [root@YH1 test]# git status # git状态信息也提示两个分支冲突
-
- 了
-
- 位于分支 master
-
- 您有尚未合并的路径。
-
- (解决冲突并运行 "git commit")
-
- (使用 "git merge --abort" 终止合并)
-
- 未合并的路径:
-
- (使用 "git add <文件>..." 标记解决方案)
-
- 双方修改: test.c
-
- 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
-
- [root@YH1 test]# cat test.c # git使用记号帮我们标记除
-
- 了冲突位置和新分支的内容
-
- hello
-
- test
-
- <<<<<<< HEAD
-
- hhhh
-
- =======
-
- yyyy
-
- >>>>>>> y123

- [root@YH1 test]# vim test.c # 手动修改冲突文件
-
- hello
-
- test
-
- hhhh
-
- yyyy
-
- [root@YH1 test]# git add test.c # 提交修改后的分支
-
- [root@YH1 test]# git commit -m "zuizhong" # 正式提交,
-
- 注释信息为“zuizhong”
-
- [master f13e70e] zuizhong
-
- [root@YH1 test]# git log --graph --pretty=oneline --
-
- abbrev-commit # 查看日志分析分支合并情况
-
- * f13e70e (HEAD -> master) zuizhong # 当前分支所处位
-
- 置为zuizhong
-
- |\
-
- | * 32e5a5a (y123) yy # y123分支冲突时所处的分支位置为yy
-
- * | 4a51362 hh # master分支冲突时所处的分支位置为hh
-
- |/
-
- * 173a360 test
-
- * 9e89cac add new file test.c
-
- [root@YH1 test]# git branch -d y123 # 删除y123分支
-
- 已删除分支 y123(曾为 32e5a5a)。
-
- [root@YH1 test]# cat test.c # 查看master分支上的最终版
-
- 本
-
- hello
-
- test
-
- hhhh
-
- yyyy

1.找到一个空目录 mkdir /test
2.进入到这个目录 cd /test
3.执行git指令 git init
4.发现一个隐藏目录 .git
5.test目录就是工作区域,.git就是仓库
1.在test目录中修改文件
2.git add .|文件名 将修改的文件提交的暂存区域
3.git commit -m "说明" 将暂存区的数据保存到仓库
4.git log 查看提交日志
1.让一个项目有多重可能性
2.分支的创建,删除合并
3.查看分支 git branch 有几行,就有几个分支,*标注当前所在的分支
4.切换分支的指令 git checkout 分支名
5.新增分支 git branch 新分支名,在跳转分支的时候创建 git checkout -b 新分支名
6. 删除分支,要求分支已经合并
1. git branch -d 分支名
2. git branch -D 分支名
将两个分支合并
git checkout abranch
git merge bbranch 在a分支合并b分支
a分支和b分支都对同一个文件进行了修改,并且commit,
合并的时候,就是保分支冲突,需要手动选择再提交就可以了
再启动一台主机,YH2
- [root@YH2 ~]# ssh-keygen
-
- [root@YH2 ~]# ssh-copy-id root@192.168.3.11
-
- [root@YH2 ~]# yum -y install git
-
- [root@YH2 ~]# mkdir /yh2 # 新建git仓库
-
- [root@YH2 ~]# cd /yh2/
-
- [root@YH2 yh2]# git init # 仓库初始化,当前目录作为
-
- master
-
- 提示:使用 'master' 作为初始分支的名称。这个默认分支名称可能会更改。
-
- 要在新仓库中
-
- 提示:配置使用初始分支名,并消除这条警告,请执行:
-
- 提示:
-
- 提示: git config --global init.defaultBranch <名称>
-
- 提示:
-
- 提示:除了 'master' 之外,通常选定的名字有 'main'、'trunk' 和
-
- 'development'。
-
- 提示:可以通过以下命令重命名刚创建的分支:
-
- 提示:
-
- 提示: git branch -m <name>
-
- 已初始化空的 Git 仓库于 /yh2/.git/
-
- [root@YH2 yh2]# git clone 192.168.3.11:/test/.git #
-
- 将YH1的test分支克隆到本机
-
- 正克隆到 'test'...
-
- remote: 枚举对象中: 15, 完成.
-
- remote: 对象计数中: 100% (15/15), 完成.
-
- remote: 压缩对象中: 100% (5/5), 完成.
-
- remote: 总共 15(差异 0),复用 0(差异 0),包复用 0
-
- 接收对象中: 100% (15/15), 完成.
-
- [root@YH2 yh2]# ls
-
- test
-
- [root@YH2 yh2]# ls test/
-
- test.c

系统 | IP 地址 | 主机 | 所需软件 |
Rokcy8.7 | 192.168.3.11 | YH1 | gitlab-ce-12.10.14- ce.0.el8.x86_64git-2.39.3- 1.el8_8.x86_64 |
Rocky8.7 | 192.168.3.22 | YH2 | git-2.39.3-1.el8_8.x86_64 |
- [root@YH1 ~]# yum -y install git # 安装git
-
- [root@YH1 ~]# yum -y install curl openssh-server postfix
-
- cronie policycoreutils-python # 安装依赖环境
-
- AppStream 2.0 MB/s | 4.3 kB 00:00
-
- BaseOS 2.0 MB/s | 3.9 kB
-
- 00:00
-
- 软件包 curl-7.61.1-25.el8.x86_64 已安装。
-
- 软件包 openssh-server-8.0p1-16.el8.x86_64 已安装。
-
- 软件包 cronie-1.5.2-8.el8.x86_64 已安装。
-
- 未找到匹配的参数: policycoreutils-python
-
- 错误:没有任何匹配: policycoreutils-python
-
-
- [root@YH1 ~]# wget --content-disposition
-
- https://packages.gitlab.com/gitlab/gitlab-
-
- ce/packages/el/8/gitlab-ce-12.10.14-
-
- ce.0.el8.x86_64.rpm/download.rpm # 下载gitlab软件包
-
- ......等待下载完成......
-
- [root@YH1 ~]# ls
-
- 公共 图片 音乐 gitlab-ce-12.10.14-
-
- ce.0.el8.x86_64.rpm mysql.sh
-
- 模板 文档 桌面 initial-setup-ks.cfg
-
- replication_mysql.yml
-
- 视频 下载 anaconda-ks.cfg ip.sh
-
- [root@YH1 ~]# rpm -ivh gitlab-ce-12.10.14-
-
- ce.0.el8.x86_64.rpm
-
- [root@YH1 ~]# rpm -q gitlab-ce
-
- gitlab-ce-12.10.14-ce.0.el8.x86_64
-
- [root@YH2 ~]# yum -y install git # YH2安装git

- [root@YH1 ~]# gitlab-ctl reconfigure
-
- ...省略部分内容
-
- Running handlers:
-
- Running handlers complete
-
- Chef Client finished, 543/1465 resources updated in 02
-
- minutes 52 secondsgitlab Reconfigured!
-
- [root@YH1 ~]# lsof -i :80
-
- COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE
-
- NAME
-
- nginx 1726 root 7u IPv4 36866 0t0 TCP
-
- *:http (LISTEN)
-
- nginx 1800 gitlab-www 7u IPv4 36866 0t0 TCP
-
- *:http (LISTEN)
-
- nginx 1801 gitlab-www 7u IPv4 36866 0t0 TCP
-
- *:http (LISTEN)

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。