作为程序员,Git是必会的东西,不会Git挺难受的,但其实只要花上几个小时就能学会,也就那么回事。我整理了Git的重点内容,更多以问题场景加操作的形式展现,小白也能学得会。(ps:别想着一小时速成,如果你是小白,多花两三个小时整体理解一下原理,这样才能完全掌握)
一. 什么是Git
先区分一下Git和GitHub的区别。总结来说,Git是本地的仓库,Github是远端的仓库,Git还提供了一些操作让我们把代码从本地仓库和远端仓库之间进行传送。但是由于Github因各种原因比较慢,所以我们也可以用国内的“码云”代替Github。
废话不多说,先安装Git。
官网地址:https://git-scm.com/downloads (官网下载较慢,可以用下面的白嫖地址)
白嫖地址:https://www.jianshu.com/p/f3470d62a0c7
安装过程就不讲了,一直点next就好,安装好后,在cmd输入:git --version,如果可以看到版本号,说明安装成功。
二. 配置Git
git config --global user.name “chengmengling” 配置用户名
git config --global user.email “1796256205@qq.com” 配置邮箱
git config --get user.name 查看用户名
git config --get user.email 查看邮箱
三. 建立本地仓库
在cmd里进入到你要放置Git仓库的文件夹
通过克隆码云的项目地址,把码云的项目克隆到本地
四. 关于配置的知识
Git有三种配置,从小到大分别为:local,global,system。上面第二步我们是在global里配置用户名和邮箱,配置的详细介绍如下:
- 三种配置
三种配置所在的文件夹
system:<git安装路径>\mingw64\etc\gitconfig
global:<用户根目录>.gitconfig
local:<当前文件夹>.git\config - 查看所有的配置
git config --system --list
git config --global --list
git config --local --list - 查看某个配置
git config --get user.name - 增加一个配置
git config --global --add user.namaa “cml”
增加后的配置长这样
- 删除一个配置
git config --global --unset user.namaa
五. 本地仓库管理
1.原理
不要着急操作,原理还是要懂一点的,理解原理可以帮助我们更好掌握Git的整体操作流程,主要先熟悉一下Git的四种状态和三个区就好:
四种状态:未跟踪态,已修改态,暂存态,已修改态
先大概把这个图过大概一遍,后续我们会结合场景操作对应起来
三个区:工作区,state区,master区
- 工作区:我们平时修改代码的文件一般都在工作区
- 版本区:
2.1 包括state缓存区,git add 操作的代码在state区
2.2 还包括master区版本区,git commit 操作后的代码在master
2. 场景+操作
前方高能,最重要的内容来了,这部分内容跟着一个个操作下来后,对于Git的理解,你会有一种恍然大悟的感觉。
场景1:添加一个新的文件,并且提交
- 新建一个文件 (未跟踪态,在工作区)
- git add <文件名> (未跟踪态–>暂存态,进入state区)
- git commit -m “<描述>”(暂存态–>未修改态,进入master区)
场景2:修改一个已有的文件,且提交
- 修改一个文件 (未跟踪态,在工作区)
- git add <文件名> (未修改态–>暂存态,进入state区)
- git commit -m “<描述>” (暂存态–>未修改态,进入master区)
把场景操作和前面的原理的四个状态+三个区对应起来,是不是好理解了一点,后续的操作你们也可以对应上,我就不一 一加上了。
场景3:删除一个文件
- git rm <文件名>
- git commit -m “<描述>”
场景4:恢复一个已经commit的文件删除操作
- 从 git log 里找到删除操作的上一个commit id
- git checkout 文件名
- git commit -m “<描述>”
场景5:恢复一个已经commit的文件修改操作,想回到未修改操作
- 从git log 里找到修改操作的上一个commit id
- git checkout 文件名
- git commit -m “<描述>”
场景6:一个文件被add了,希望回到没有被add的状态
- 方法一:git reset <文件名>
- 方法二:git rm --cache <文件名> {运行这个语句会真的删除stage中的文件,一般用第一种}
场景7:修改了一个文件,想恢复原来的状态(回到最后一次commit后的文件状态)
- git checkout <文件名>
场景8:删除所有untracked文件(文件被新建了,但是没有被编辑)
- 方法1:git clean -f . (注意最后有一个点)
- 方法2:git clean -df