Git基础

118 阅读4分钟

一,Git基本命令

Git工作目录下对于文件的修改(增加,删除,更新)会存在几个状态,这些修改的状态会随着我们执行Git命令而发生变化。

image-20230927183220462

工作区:Git初始化的那个目录就是工作区。


Git基本命令:

  • 初始化本地仓库

    git init 
    

    要让Git管理目录必须先初始化目录,当出现.git的隐藏文件的时候就说明初始化成功了。

  • 查看本地仓库状态

    git status
    
  • 将文件添加到暂存区

    git add 文件名
    git add . #添加当前目录下所有文件
    
  • 将暂存区文件删除

    git rm --cached 文件名 #删除处于暂存区的文件
    
  • 将文件添加到本地仓库

    git commit -m '信息' 文件名 #将暂存区的文件提交到本地仓库,如果不写文件名,默认将全部处于暂存区的文件提交到本地仓库
    
  • 查看历史版本信息

    git reflog #查看本地仓库信息
    
    • 查看详细的本地仓库信息

      git log #查看详细的版本信息
      

      一般会加上一堆参数来简化这个信息,同时加上命令的别名简化。

      常用选项

      --all 显示所有分支

      --pretty=online 将提交信息显示未一行

      --abbrey-commit 让输出的commitld更加简短

      --graph 图形化显示

      可以在配置文件中设置来简化这个命令。

  • 切换版本

    git reset --hard 版本号 #切换git版本号
    

    这个版本号通过git reflog命令来查看。

    image-20230927204023216

    1dd984d0就是版本号。

    查看已删除的记录:git reflog来查看已经删除的记录。

二,Git的分支

几乎所有的版本控制系统都支持分支。使用分支意味着你可以把你的工作从主线上分离开来进行重大的bug修改,开发新功能。

2.1 Git分支相关命令

  • 查看本地分支
```bash
git branch
```
  • 创建新分支

    git branch 新分支名
    
  • 切换分支

    git checkout 分支名
    git checkout -b 分支名  #创建分支并切换到该分支
    
  • 合并分支

    在Git中,分支合并有两种不同的实现方式:

    • 变基:把一个分支的修改合并到当前分支上。

      git rebase 分支名
      

      变基解释图

      git rebase的好处是让我们的提交记录非常清晰,不会出现分支的情况。

      git rebase的坏处是大部分情况下,rebase 的过程中会产生冲突的,此时,就需要手动解决冲突,然后使用git addgit rebase --continue的方式来处理冲突。

    • 分支合并

      git merge 分支名
      

      分支合并解释图

      image-20230928103324592

      不同于 git rebase的是,git merge 在不是 fast-forward(快速合并)的情况下,会产生一条额外的合并记录,类似**Merge branch 'xxx' into 'xxx'**的一条提交信息。

  • 删除分支

    git branch -d 要删除的分支 #删除分支时需要各种检查。
    git branch -D 要删除的分支 #不做任何检查强制删除分支
    

    注:不能删除当前所在分支,只能删除其他分支。

2.2 分支合并的冲突问题

冲突原因: 多个分支在同一个文件的同一个位置进行了不同的修改,Git无法替我们决定用哪个。

解决冲突方法:在合并失败后需要解决冲突的文件内容会变成:

image-20230927205936552

<<<<<<< HEAD 

当前分支修改的代码块 

======== 

hot-fix分支修改的代码块 > > > > hot-fix

三方合并:在合并两个分支时,git会检索两个分支共同的祖先,而后比较两个分支与主线节点,存在三种情况。

  1. 当两方都存在差异时,产生冲突

  2. 当只有a分支存在差异时,直接使用有a分支的commit

  3. 双方不存在差异则不处理

2.3 分支在开发中使用原则与流程

在开发过程中,一般有如下分支使用原则与流程:

  • master(生产)分支

    线上分支,主分支,中小规范项目作为线上运行的应用对应的分支。

  • develop(开发)分支

    是从master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期的上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支准备上线的。

  • feature/xxxx分支

    从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并到develop分支。

  • hotfix/xxx分支

    从master派生的分支,一般作为线上修复bug使用,修复完后需要合并到master,test,develop等分支中。

大致流程图:

image-20230927210835562