跳转至

01-自动化CI-Git

Git

整体流程

1. 注册公司的 gitea 账户
2. 项目管理员拉入团队
3. git clone 'url' 至本地,公钥管理仓库
4. git branch -b hcc-key
5. 增加自己的公钥
6. git add . 
7. git commit -m "chore: 增加 hcc 的 公钥"
8. git push origin hcc-key

当你开始新项目时

#1. 初始化新仓库
mkdir new-demo
git init                    # 将当前目录作为 Git 本地仓库使用
git init [目录名]            # 创建新目录,当作 Git 本地仓库使用
#2. 设置签名
设置签名的作用是:区分不同开发人员的身份 ,这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。
当前仓库有效:设置完信息保存位置:./.git/config 文件,可以通过cat查看

$ git config --local user.name "name":设置用户名

$ git config --local user.email "email address":设置邮箱

$ cat ./.git/config或者$ git config --local --list:查看配置结果

全局有效设置:设置完信息保存位置:~/.gitconfig可以通过cat查看

$ git config --global user.name "name":设置用户名

$ git config --global user.email "email address":设置邮箱

$ cat ~/.gitconfig或者$ git config --global --list:查看配置结果
#3. 状态查看
$ git status:查看工作区、暂存区状态
#4. 切换分支
$ git checkout -b hc-demo :新建一个 hc-demo 分支,请切换至该分支。
#5. 添加修改至暂存区
$ git diff : 查看文件变化 
$ git add 文件名 :将工作区的“新建/修改”文件添加到暂存区
$ git add .:将所有“新建/修改”文件添加到暂存区
#6. 提交本地库
$ git commit -m "注释" :将暂存区的内容提交到本地库
#7. 推送至远端仓库
$ git push origin hc-demo: 将修改推送至远端仓库的 hc-demo 分支。

分支管理

什么是分支?

在版本控制过程中,使用多条线同时推进多个任务。

分支的好处

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

分支创建,切换,删除

  • git branch [分支名] :创建分支
  • git branch -a:查看所有分支
  • git checkout [分支名]:切换分支
  • git checkout -b [分支名] :创建并切换至新分支

  • git branch -D [分支名]:删除分支

分支合并

合并分支需要有两步操作

  • git checkout [被合并分支名]:切换到接受修改的分支(要被合并,增加新内容的分支)
  • git merge [要合并过来的分支名]:将另一个分支并入当前的分支中去。 Git 会自动以最佳方式将两个不同快照中独特的工作合并到一个新快照中去。

解决冲突

当两个要合并的分支同时修改到同一个文件的同一行时,执行合并操作的时候Git不知道到底保留哪一行是正确的,这个时候就会产生合并冲突,需要手动去修改。

当执行合并操作并且产生合并冲突时,需要手动去修改。

  • 编辑文件,删除特殊符号 <<<<<<< DEAD

  • 把文件修改到满意的程度,保存退出

  • git add [文件名]

  • git commit -m "日志信息":(此时 commit 一定不能带具体文件名)

项目管理

不像中心化的版本控制系统(客户端与服务端很不一样),Git 仓库基本上都是一致的,并且并可以同步他们。 这使得拥有多个远端仓库变得容易 —— 你可以拥有一些只读的仓库,另外的一些也可写的仓库。

当你需要与远端仓库同步的时候,不需要使用它详细的链接。Git 储存了你感兴趣的远端仓库的链接的别名或者昵称。 你可以使用 git remote 命令管理这个远端仓库列表。

  • git remote:列出远端名
  • git remote -v:列出每个远端名的实际链接地址
  • git remote add:为你的项目添加一个新仓库
  • git remote add [alias] [URL]
  • git remote rm:删除现存的某个别名
  • git remote rm [alias]

Git项目分支设计 一个好的项目需要有一个合理的项目分支管理

  • master:主分支;经过本地测试的,开发分支,开发新功能的基准分支
  • rc:预发布分支;合并到master的测试分支,有bug就修复,然后合并回develop分支
  • stable:demo 分支,经过测试,给客户使用

分支与合并

  • branch
  • 分支创建,切换,删除
  • git branch [分支名] :创建分支
  • git branch -D [分支名]:删除分支
  • git branch -a:查看分支
  • git checkout [分支名]:切换分支
  • git checkout -b [分支名] :创建并切换至新分支

查看历史记录

下面四种方式都可以查看历史提交记录,$ git reflog这个指令较为常用,后面的版本切换一般都是使用这个命名查看即可。

  • git log:提交人,提交id,提交时间,提交描述等(多屏显示控制方式: 空格向下翻页 、b 向上翻页 、q 退出 )
  • git log --author:之寻找某个作者的最近几次提交,大小写敏感
  • git log --author=[作者] --online -[几次]
  • git log --since --before:根据日期过滤提交记录
  • git log --oneline --before={3.weeks.ago} --after={2022-08-10} --no-merges :Git 项目中三周前且在八月十日之后的所有提交
  • git log --pretty=oneline:简化版:提交ID,提交描述
  • git log --oneline:简化版:提交ID,提交描述
  • git reflog:简化版:提交ID,提交描述

比较文件差异

对比文件差异的方式有以下三种:

  • git diff [文件名]:将工作区中的文件和暂存区进行比较
  • git diff [本地库中历史版本] [文件名]:将工作区中的文件和本地库历史记录比较
  • git diff:不带文件名比较多个文件

历史版本前进后退

Git 会记录我们提交的各个信息,并由 HEAD 指针来指向最新的提交,版本前进和后退的本质就是移动指针来实现。

版本前进后退有以下三种方式可实现

  • git reset --hard 分支号:基于索引值操作[推荐] (7bf0e31再图4.1中查看)
  • git reset --hard HEAD^:使用^符号:只能后退 (一个^表示后退一步,n 个表示后退 n 步)
  • git reset --hard HEAD~n:使用~符号:只能后退 (表示后退 n 步 )

reset 命令的3个参数

  • --soft 参数 : 仅仅在本地库移动 HEAD 指针
  • --mixed 参数:在本地库移动 HEAD 指针,重置暂存区
  • --hard 参数 :在本地库移动 HEAD 指针、重置暂存区、重置工作区

删除文件找回

找回文件分两种情况:

  • git reset --hard [指针位置]:删除操作已经提交到本地库

  • git reset --hard HEAD:删除操作尚未提交到本地库

HEAD就指向是本地库的当前提交版本位置,上面的操作,就是将工作区和暂存区与本地库同步。

git tag 给历史记录中的某个重要的一点打上标签

比如说,我们想为我们的项目发布一个 1.0 版本,我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEADv1.0 的标签。

  • git tag -a [版本]:打 tag
  • git log --oneline --decorate --graph : 我们可以看到我们的标签和备注了