写点什么

【git】:有关 git 的基础指令以及分支概念

作者:翼同学
  • 2022 年 9 月 05 日
    广东
  • 本文字数:1994 字

    阅读完需:约 7 分钟

【git】:有关git的基础指令以及分支概念

1️、前言


今天学习的笔记内容是:


  • Git 的基本使用



2️、内容

2.1、获取本地仓库


要使用git对我们的代码进行版本控制,则必须获取本地仓库。


步骤如下:


  1. 创建一个文件夹作为我们本地的git仓库;

  2. 进入这个文件夹,鼠标点击右键,打开Git Bash窗口,执行命令:git init


举个例子:


  • 新建一个文件夹git-test



  • 进入新建的文件夹,打开Git Bash窗口,输入语句git init



备注:如果本地仓库创建成功,则可以在文件夹下看见隐藏的.git目录



2.2、基础指令

2.2.1、文件状态


git工作目录下,文件一般会有四种状态:未跟踪未暂存已暂存还有已提交。这些状态随着我们执行git命令而发生变化。


具体看下面示意图:



2.2.2、工作区、暂存区以及仓库


  • 工作区


就是你在电脑里能看到的目录,也就是某个文件夹。


  • 暂存区


也就是存放在.git目录下的index文件中,即.git/index。有时我们将暂存区称作索引。


  • 仓库(也就是版本库)


在工作区下的隐藏目录.git就是当前的版本库。



2.2.3、查看修改的状态


  • 命令:git status

  • 作用:查看修改的状态(暂存区 / 工作区)。



2.2.4、添加单个文件到暂存区


  • 命令:git add 文件名

  • 作用:将单个文件添加到暂存区。



2.2.5、将所有修改都加入暂存区


  • 命令:git add .

  • 作用:将所有修改都加入暂存区去。



2.2.6、提交暂存区到本地仓库


  • 命令:git commit -m "注释内容"

  • 作用:将暂存区里的内容提交到本地仓库的当前分支。


备注:


  • 在 Linux 系统中,commit需要信息使用单引号'括起来

  • 而在 Windows 系统下,commit信息使用双引号"括起来。



2.2.7、查看提交日志


  • 命令:git log

  • 作用:查看提交日志内容。


需要注意,该语句可以带有可选参数:


git log [--all] [--pretty=oneline] [abbrev-commit] [--graph]


各参数的作用如下:


  • --all:显示所有分支;

  • --pretty=oneline:将提交信息显示为一行;

  • abbrev-commit:使输出的内容更加简短;

  • --graph:以图的形式显示。



2.2.8、版本回退


  • 命令:git reset --hard commitID

  • 作用:版本切换,也就是版本回退


备注:使用git log指令可以查看到commitID



2.2.9、查看已删除的记录


  • 命令:git reflog

  • 作用:查看已经删除的提交记录



2.3、分支


几乎所有版本控制系统都以某种形式支持分支。


使用意味着你可以从开发主线上分离开来进行重大 Bug 的修改,开发新功能等。一个分支代表一条独立的开发线,并不会影响主线的开发。


需要注意:在执行git init时,默认情况下Git就会为你创建master分支。



2.3.1、查看本地分支


  • 命令:git branch


2.3.2、创建本地分支


  • 命令:git branch 分支名


2.3.3、切换分支


  • 命令:git checkout 分支名


2.3.4、创建并切换分支


  • 命令:git checkout -b 分支名


2.3.5、合并分支


  • 命令:git merge 分支名



2.3.6、删除分支(需检查)


  • 命令:git branch -d 分支名



2.3.7、删除分支(不用检查,强制删除)


  • 命令:git branch -D 分支名


2.3.8、解决合并分支的冲突


为什么需要解决冲突?


当两个分支上对文件的修改存在冲突时,比如两个分支同时修改了同一文件中的同一行代码,此时git无法判断应该怎么合并,这时候就需要手动解决该冲突问题。


步骤如下:


  1. 处理文件中冲突的地方;

  2. 将解决完冲突的文件添加到暂存区中;

  3. 提交到版本库中。



2.3.9、不同分支的使用


在开发中,一般可以有以下原则:


  1. master分支:属于生产分支,也就是主分支,可作为线上运行的应用对应分支。

  2. develop分支:作为开发分支,一般用于开发部的主要开发分支,该分支会不断有新的feature分支合并进来。当阶段开发完成后develop分支将合并到master分支上去,准备上线;

  3. feature/xxx分支:该分支是从develop分支上创建而来,用于并行开发,当任务完成后可合并到develop分支上去;

  4. hotfix/xxx分支:一般用于线上 bug 修复,修复完成后需要合并到 master分支和develop分支,合并完成后hotfix分支可以删除;

  5. 当然,还有其他命名的分支,比如代码测试分支test,预上线分支pre等,具体应看公司规定。



2.4、小结


记录:


  • HEAD用于指向当前分支,在上图中,HEAD指向了 master 分支。

  • objects 表示<kbd>Git</kbd>的对象库,实际位于".git/objects"目录下,包含了创建的各种对象及内容。

  • 当对工作区中修改或新增的文件执行git add命令时,暂存区的目录树被更新,同时该文件的内容会被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

  • 当执行提交操作git commit时,暂存区的目录树将写入到版本库中的对象库object,此时master分支也会做相应的更新。

  • 当执行git reset master命令时,暂存区的目录树会被重写,被master分支指向的目录树所替换,但是工作区不受影响。

  • 当执行git checkout -- <file> 命令时,暂存区中指定的文件将替换工作区的文件。此时工作区未添加到暂存区中的改动将被清除。

  • 当执行git checkout HEAD <file> 命令,此时HEAD指向的master分支中的指定文件将替换暂存区和以及工作区中的文件。需要注意,这个操作将会清除工作区中未提交的改动,同时还会清除暂存区中未提交的改动,因此得慎用。



3、在最后


好了,本篇笔记就到写这,欢迎大家到评论区一起讨论!

发布于: 刚刚阅读数: 4
用户头像

翼同学

关注

知行合一 2022.08.02 加入

@珠海科技学院

评论

发布
暂无评论
【git】:有关git的基础指令以及分支概念_git_翼同学_InfoQ写作社区