目录
一、前言
二、初始化仓库
三、添加文件
四、Git 流程全景图
五、Git工作流程
六、工作区和暂存区
七、查看文件状态
八、查看提交日志
九、查看差异
十、版本回退
十一、管理修改
十二、修改撤销
十三、删除文件
十四、分支管理
十五、项目分支操作
十六、文件冲突
十七、转视频版
一、前言
接着上篇:Git图解-为啥是Git?怎么装?接下来,看下Git常用命令有哪些。
二、初始化仓库
Git操作前需要初始化仓库,用于存储版本管理的项目代码,目前Git仓库有2种类型:
-
本地仓库:是在开发人员自己电脑上的仓库
-
远程仓库:是在远程服务器上的仓库(跟团队其他成员共用,此处暂时不讲)
配置自己名称与邮箱账户,在公司一般是自己名称拼音与公司工作邮箱
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
初始化本地仓库
git init
命令执行后,会在当前目录下多了一个.git
的目录,这个目录是Git
本地仓库,用于跟踪与管理代码(文件),没事别手动修改这个目录里面的文件,容易改乱了,导致Git
仓库给蹦了。
这里要注意,部分小伙伴电脑没勾选 隐藏项目 选项,会看不见 .git 目录
三、添加文件
仓库初始化好了,怎么将文件添加到仓库,并管理起来呢?
步骤1:创建一个普通文本文件
步骤2:将文件添加到暂存区
git add readme.txt
步骤3:将文件添加到版本库
git commit -m "添加了readme.txt文件"
简单解释一下git commit
命令,-m
后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。 git commit
命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件)
扩展
如果后续添加文件多了,可以使用下面命令
git add file1.txt
git add file2.txt file3.txt
git add . 当前文件夹下所有文件
git commit -m "add 3 files."
四、Git 流程全景图
五、Git工作流程
六、工作区和暂存区
在Git中进行 crud 操作时都需要执行 git add 文件这个操作,底层操作将操作文件添加一个叫缓存区区域中缓存,当操作完毕之后,使用 git commit 操作,进行统一提交,将编辑文件统一同步版本中
七、查看文件状态
问题:如何查看项目目前的状态?我在电脑前写了一段时间代码,用Git管理,中途上厕所,然后又去吃了个苹果,继续回来工作,不记得之前用Git干了些什么了?
git status # 查看当前git版本库的状态(查看缓存区中的文件内容)
八、查看提交日志
实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git
中,我们用git log
命令查看
git log
git log
命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline
参数:
git log --pretty=oneline
黄色长长的字符串是本次提交的commit id, 是Git
使用SHA-1
算法产生唯一标识符,能保证全球唯一。
九、查看差异
如果一个文件知道被人修改了,但如果能看看具体修改了什么内容,自然是更好的
比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的`readme.txt`,所以,需要用`git diff`这个命令看看:
git diff # 查看不同版本之间的文件差异
十、版本回退
我们不断修改文件,不断的往版本库中提交文件。就好比玩RPG
游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态。Git
也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git
中被称为 commit
。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit
恢复,然后继续工作,而不是把几个月的工作成果全部丢失。
如果想回到上一个版本,应该怎么做呢?
Git
必须知道当前版本是哪个版本,在Git
中,用HEAD
表示当前版本,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
。
git reset --hard HEAD^
回到指定版本
git reset --hard <commit id>
拓展需求: 如何回退到最新版本
十一、管理修改
使用Git修改文件,存在一个需要探讨的问题:二次修改
操作方式1:
第一次修改 -> git add -> 第二次修改 -> git commit`
操作方式2:推荐使用
第一次修改 -> git add -> 第二次修改 -> git add -> git commit
注意:建议在每次 commit 之前先检查是否有文件没有被 add
十二、修改撤销
git checkout -- filename`可以丢弃工作区的修改:-- 后面是一个空格
命令 git checkout -- readme.txt
意思就是,把 readme.txt
文件在工作区的修改全部撤销,这里有两种情况: 一:readme.txt
自修改后还没有被放到暂存区(git add
),现在,撤销修改就回到和版本库一模一样的状态; 二:readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次 git commit
或 git add
时的状态。
注意: git checkout -- file
命令中的 --
很重要,没有 --
,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到 git checkout
命令
十三、删除文件
一般情况下,你通常直接在文件管理器中把没用的文件删了,或者用rm
命令删了
git rm test.txt
这个时候,Git
知道你删除了文件,因此,工作区和版本库就不一致了,git status
命令会立刻告诉你哪些文件被删除了:
删除完成后需要 commit
如果删除了想恢复,可以使用 reset
版本恢复
步骤1:本地删除没用的文件(查看状态)
步骤2:先 add 以下(查看状态与步骤1进行比较)
步骤3:提交删除文件
十四、分支管理
分支管理的是Git灵魂,开发必不可少基本操作,必须掌握。
为啥存在分支?因为项目成品经过这几个流程: 开发, 测试,上线,bug修改,多版本发布等。同一个项目不同版本同时开发,同时测试,同时上线,怎么确保在这种复杂情况下让项目能独立,又能相关关联执行下去呢?Git给出解决方案是分支管理, 每一个阶段就是一个分支,即可以相互独立,又可以相互合并。
查看分支
git branch
创建分支
git branch <name>
切换分支
git checkout <name>
创建 + 切换分支
git checkout -b <name>
合并分支
将某分支合并到当前分支
git merge <name>
删除分支
git branch -d <name>
十五、项目分支操作
简化版
完整版
master分支:用于版本的更新,当比较大的功能开发完成或者更新之后会有一次集体的发版,就会将所有的代码都合到master(有的公司也会用release分支发版,原理都是一样);
develop分支:一般是开发测试分支,在项目发版上线之前都会现在dev分支上统一进行测试,确保功能达标没有bug之后再推到master分支;
feature分支:用来做分模块功能开发,建议命名为feature-xxx,模块完成之后,会合并到 dev 分支;
hotfix/fixbug分支:是用来做线上的紧急 bug 修复的分支,建议命名为 hotfix-xxx。当线上某个版本出现了问题,将检出对应版本的代码,创建 Hotfix 分支,问题修复后,合并回 dev和master ,这里注意,合并到 master 的时候,一般要打上修复后的版本标签。
扩展阅读:一种优雅的Git分支实践_git 分支管理最佳实践_浪飞yes的博客-CSDN博客
十六、文件冲突
分支1中有个文件跟其他分支文件一样,如果同时发生修改了,进行合并,就出现文件冲突问题。
到这,本篇就结束了,欲知后事如何,请听下回分解~
十七、转视频版
看文字不过瘾可以切换视频版:4小时让你直接上手Git操作