Git版本流程控制基础命令
[TOC]
Git整体架构
整体架构
工作流程
配置 Git 忽略文件
1.IDEA特定文件
2.Maven工程的target目录
问题 **1:**为什么要忽略他们?答:与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽 IDE 工具之间的差异。
问题 2:怎么忽略?
1.基础命令学习
1 | #查看git 版本号 |
2.撤销命令(危险)
1 | #git reset是一个危险的命令,加上--hard也是如此 |
3.本地仓库上传到gitee仓库上
1 | #1.初始化 |
4.gitee仓库上下载项目
1 | #下载仓库的命令 |
5.git分支
1.创建分支
2.切换分支
3.切换到master分支
1.介绍
2.分叉历史
3.手画图
每一个圆圈都是一次提交的版本
第三次提交的时候有别的工作需要或者发现有点提交不好,从新创建分支做新的需求继续工作。
发现第二次提交有bug但是暂时没有报错。创建新分支需要修改提交了几个版本修复bug以后合并到主分支master上
4.查看你的提交历史,各分支的指向以及项目的分叉情况
testing分支有红色箭头向下指到某次提交上就是在那次提交分支出来的
master主分支有星号向下指到某次提交上就是在那次提交分支出来的
5.分支命令
1.创建切换
1 | #创建分支 |
2.合并分支命令(还有一种形式是变基,放到第8个标题)
1 | #要有一个其他分支 |
3.直接剪出分支
1 | #-b直接剪出分支并切换上去 |
6.分支模型
1.远程分支可以同时进行更新
2.把远程的master分支拉取下来,然后本地合并merge
3.可以跟踪远程不同的分支
4.推送
介绍
命令
远程仓库的样子
5.分支模型命令
1 | #从远程仓库克隆一个下来 |
6.分支模型的功能
1.分支权限讲解
2.本地剪出了多个分支上传到远程
1.本地
2.远程
3.本地上传到远程分支
1 | #如果本地剪出了分支远程仓库没有当前分支需要使用的命令 |
4.合并分支
1.命令版
1 | #回到主分支master |
2.网页版
去点击
gitee->Pull Requests->创建Pull Requests
2.查看详情
3.解决冲突
4.测试通过
5.审查通过
6.合并
7.接受Pull Requests(合并成功)
7.git工具-重置
工作流程图解
1.工作流程
2.git init
3.git add
4.git commit
5.修改文件
在提交就变成v2版本
git add
git commit
2.命令
6.重置的作用
1.移动head(指向)
1 | #移动到父提交,就是移动到指向的那次提交,并且撤销那次提交信息,会发现git diff --staged看到暂存区和最后一次提交看到区别 |
2.更新所以(–mixed)
1 | #移动到父提交,就是移动到指向的那次提交,并且撤销那次提交信息,会发现git diff看到本地和暂存区的区别(--mixed可有可无一般加上) |
3.更新工作目录(–hard) 危险
#!注意:危险
1 |
|
8.变基(注意团队协作时候慎用)
注意事项(变基的风险在官网看到的):
呃,角色变的并非完美无缺,它必须遵循规范:
如果提交存在于你的这些仓库之外,而其他人可能基于提交进行开发,那么就不要执行更改基。
否则,人民群众会冤枉你,你的朋友和家人也会欢迎你,唾弃。
改变基操作的实质是丢弃了一些现有的新建地,但如果你已经提交了一些实际不同的内容,而其他人已经提交了一些至仓库。如果你进行了工作,如果此时,如果你git rebase
提交并使用命令工作,那么你的同胞将再次组织他们与你的工作人员一起工作,并与你的工作人员进行合作,将他们与你的工作进行整合。他们修改过的提交,会发生一团糟。
如果你只是不会离开你的电脑提交的执行变基,那就不会有事了。那个你已经开发到仓库的提交上执行了更改的库命令,并因此遗弃了别人所基于的提交,你的大麻烦,因此有一些人鄙视你。
如果你或你的同事在某些情况下要执行此git pull --rebase
命令,请一定通知每个人,这样尽管伤痛,但不能缓和执行。
变基 vs. 合并
至此,你已经在实战中学习了,并打算在实战中学习的时候讨论一下,最终你一定要改变什么后退的方式。 。
从这个角度看,提交历史亵渎,你利用谎言本身就是记录历史的一种说法。如果是由它产生的约定是这样发生的事情。
没有人会出版一本书的第一版,软件维护手册也是需要方便使用的。会使用rebase
及filter-branch
等工具来写故事,怎么方便后来的读者就怎么写。
现在,让我们回到之前的问题上来,到底合并还是变基好?希望你能明白,这并没有一个简单的允许。分别是学习了其中的用处,相信你根据情况已经做出了明智的选择。
总的是,只对广泛使用或使用方便操作的方式进行操作,方便大家的修改执行操作,从没有给你的能力改变到合适的地方,让你可以改变操作的习惯,带来方便,这样可以方便地使用。
变基的基本操作
1.有两个分支
2.分叉的提交历史(用git merge **)
它通过两个最新分支的方法是最容易进行的merge
。它与两个最新的分支(以及最新的命令C3
)C4
的共同(以及最近的三个命令C2
)的结果是同时生成一个新的预告(并提交)。 )。
3.通过合并操作来整合分叉的历史(git rebase **)
你可以在C4
中提取C3
基础的基础和修改,然后在 Git 中,这种操作就习惯rebase
了。至分支上的所有修改都移到分支上,就好像“重新播放”一样。(源分支指的是你所在分支,指定分支就是你要合并到的分支。前面的话的意思是:就是你把源分支修改的部分都移到你指定的分支上去,然后再回到指定分支进行合并)
在这个中,你可以检测出experiment
分支,然后将它变到基master
分支上:
1 | #切换分支 |
git rebase命令之后的方式
官网的介绍:
然后它的原理是先找到这两个分支(当前分支experiment
、改变基操作的目标即为基础并为master
最近的共同祖先)C2
,然后当前分支提交给该祖先的历次,相应的存储临时文件,修改将当前指定的目标明确目标顺序C3
,最后将在另存为临时文件的依序应用之前将其另存为临时文件。
4.将C4
中的修改变基到C3
上(就相当于c4修改的部分移到c3上去)
现在回到master
分支,进行一次快进合并,合并完成后两个分支都指到当前分支。
此时,C4
指向的分支就改变了合并示例,虽然实际上的开发工作是并行的,但似乎发现是历史上没有记录的,他们是直接分叉的。
1 | #切换回master |
后面一部分没写看官网吧
第五个部分对应到 (更有趣的变基例子)
9.自建代码托管平台**-GitLab**
9**.1 GitLab** 简介
GitLab 是由 GitLabInc.开发,使用 MIT许可证的基于网络的Git仓库管理工具,且具有 wiki和 issue 跟踪功能。使用 Git作为代码管理工具,并在此基础上搭建起来的 web 服务。
GitLab 由乌克兰程序员 DmitriyZaporozhets 和 ValerySizov 开发,它使用 Ruby语言写成。后来,一些部分用 Go语言重写。截止 2018 年 5 月,该公司约有 290 名团队成员,以
及 2000 多名开源贡献者。GitLab 被 IBM,Sony,JülichResearchCenter,NASA,Alibaba,
Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX 等组织使用。
9**.2 GitLab** 官网地址
官网地址:https://about.gitlab.com/
安装说明:https://about.gitlab.com/installation/
9**.3 GitLab** 安装
9**.3.1** 服务器准备
准备一个系统为 CentOS7 以上版本的服务器,要求内存 4G,磁盘 50G。关闭防火墙,并且配置好主机名和 IP,保证服务器可以上网。
此教程使用虚拟机:主机名:gitlab-server IP 地址:192.168.6.200
9**.3.2** 安装包准备
Yum 在线安装 gitlab- ce 时,需要下载几百 M 的安装文件,非常耗时,所以最好提前把所需 RPM 包下载到本地,然后使用离线 rpm 的方式安装。
下载地址:
1.清华大学镜像站可以搜索到gitlab-ce安装包
https://mirrors.tuna.tsinghua.edu.cn/
2.官网下载链接
https://packages.gitlab.com/gitlab/gitlabce/packages/el/7/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
注:资料里提供了此 rpm 包,直接将此包上传到服务器/opt/module 目录下即可。
9**.3.3** 编写安装脚本
安装 gitlab 步骤比较繁琐,因此我们可以参考官网编写 gitlab 的安装脚本。
1 | [root@gitlab-server module]# vim gitlab-install.sh |
给脚本增加执行权限
1 | [root@gitlab-server module]# chmod +x gitlab-install.sh |
然后执行该脚本,开始安装 gitlab-ce。注意一定要保证服务器可以上网。
1 | [root@gitlab-server module]# ./gitlab-install.sh 警告:/opt/module/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f27eab47: NOKEY 准备中... ################################# |
9.3.4 初始化 GitLab 服务执行以下命令初始化 GitLab 服务,过程大概需要几分钟,耐心等待…
1 | [root@gitlab-server module]# gitlab-ctl reconfigure |
9**.3.5** 启动 GitLab 服务
执行以下命令启动 GitLab 服务,如需停止,执行 gitlab-ctl stop
1 | [root@gitlab-server module]# gitlab-ctl start |
9.3.6 使用浏览器访问 GitLab 使用主机名或者 IP 地址即可访问 GitLab 服务。需要提前配一下 windows 的 hosts 文件。
首次登陆之前,需要修改下 GitLab 提供的 root 账户的密码,要求 8 位以上,包含大小写子母和特殊符号。因此我们修改密码为 Atguigu.123456 然后使用修改后的密码登录 GitLab。
登陆成功
9.3.7 GitLab 创建远程库
➢ 1)安装 GitLab 插件
➢ 2)设置 GitLab 插件
➢ 3)push 本地代码到 GitLab 远程库
自定义远程连接
注意:gitlab 网页上复制过来的连接是:http://gitlab.example.com/root/git-test.git,需要手动修改为:http://gitlab-server/root/git-test.git
选择 gitlab 远程连接,进行 push。
首次向连接 gitlab,需要登录帐号和密码,用 root 帐号和我们修改的密码登录即可。
代码 Push 成功。
只要 GitLab 的远程库连接定义好以后,对 GitLab 远程库进行 pull 和 clone 的操作和
Github 和码云一致,此处不再赘述。