Git 快速上手

GitHub208 次阅读18 分钟

一、Git 简介

Git 是一款版本控制系统,它可以追踪文件的更改,并能多人协同开发,它最初由 Linus Torvalds 在 2005 年为更好地管理 Linux 内核而设计的; Git 是目前最流行的版本控制系统,主要功能有: ● 代码备份 ● 版本回退 ● 协同开发 ● 权限控制

二、下载安装

下载地址:**https://git-scm.com/**** **,随后“傻瓜式”安装(一路下一步即可)

image.png

三、Git 基本使用

1、起始配置**#**

第一次使用 Git 的时候,我们需要配置姓名和邮箱,让 Git 知道当前开发者的基本信息 配置姓名:

git config --global user.name "Your Name"

配置邮箱:

git config --global user.email "email@example.com"

注意点:

1. 命令中的各单词中间有空格。
2. 上述两个命令只在第一次使用 Git 时运行, 若输入错误, 重新运行命令即可。
3. 可以使用 git config --list或git config -l命令来查看配置信息 。
4. 上述这两个命令不用自己手敲, 直接复制粘贴,随后修改【姓名】与【邮箱】即可。

2、linux 常用命令**#**

Windows 为图形化操作形式,Linux 一般使用命令与系统进行交互,常用的命令如下:

命令 含义
mkdir 创建文件夹(make directory)
cd 改变工作目录,(change directory 缩写)
touch 创建一个文件
ls 查看文件夹下的文件 (list 单词的缩写)
cat 查看文件内容
Tab 路径自动补全
clear 清屏(也可以使用 ctrl + L 快捷键)
rm 删除文件或文件夹 (删除不会进入回收站) -r 递归删除(用来删除文件夹)
ctrl + c 取消命令 c cancel 缩写
上下方向键 查看命令历史

3、vim 编辑器**#**

Vim 是一款命令行下的文本编辑器,编辑方式跟图形化编辑器不同,基本操作:

1. 命令行 vim 文件名 打开文件
2. 按i进入编辑模式
3. 开始编辑文件内容
4. ESC + :wq 保存并退出(w => write   q=>quit)
5. ESC + :q! 不保存并退出 

4、Git 的三个区**#**

以生活中做菜为例,整个过程中涉及到三个区域:① 货架、② 购物车、③ 厨房

image.png

Git 中同样也分为三个区域,分别是:

  1. 工作区(代码编辑区)
  2. 暂存区(暂时存储区)
  3. 版本区(版本控制区)

工作区、暂存区、版本区,三个区共同组成了一个 Git 仓库

image.png

5、基本操作流程**#**

第一步:创建一个空文件夹(名称不要包含中文),随后双击打开文件夹。

第二步:在文件夹空白处右键 ,随后点击 “Open Git Bash here” 启动命令行。

第三步:创建一个 Git 仓库,命令为:git init,命令执行成后,提示如下:

image.png

git init执行后,会出现一个文件夹,这表示当前文件夹已成为一个 Git 仓库。

第四步:创建一些文件并编写代码,比如创建 【a.txt】,此时工作区已经有了新文件。

第五步:把工作区中【a.txt】添加到暂存区,具体命令为:git add a.txt,此命令无提示。

image.png

补充:git add -A可以把工作区中的所有文件,都添加到暂存区,比较常用。

第六步:把暂存区【a.txt】添加到版本区,具体命令为:git commit -m ‘xxx’,随后提示如下:

image.png

注意:此时我们先不用关心上图中的具体提示,后面会详细讲解。关键步骤图示:

image.png

6、Git 三区的位置**#**

Git 的三区位置大致如下(了解即可)

image.png

7、查看仓库状态**#**

git status命令用于显示仓库当前的状态,git status -s也用于查看仓库状态,但提示更为简短。

  1. 若没有需要提交的内容,提示如下 image.png
  2. 若工作区的内容没有提交暂存区,提示如下 image.png
  3. 若暂存区的内容没有提交版本区,提示如下 image.png

8、删除暂存**#**

git rm —cached 可以将文件从暂存区中删除。

image.png

9、对比差异**#**

git diff用于对比:工作区 vs 暂存区 git diff —cached 用于对比:暂存区 vs 仓库区 diff 命令的返回格式如下图:

image.png

注意:实际开发中文件多,且修改内容也多,我们会借助 git 的 GUI 工具进行文件差异对比。

10、查看版本日志**#**

借助于下面命令,可以查看整个 git 的提交记录

  1. git log:按提交时间降序列出所有提交,最新的提交会首先显示。 image.png
  2. git log —oneline:在git log的基础上,以简洁的一行显示每个提交。如果内容偏多, 需要使用方向键上下滚动, 按 q 退出。 image.png

11、版本回退**#**

Git 可以将项目代码内容切换到历史的任何一个版本,使用 git reset —hard 版本号 使用场景如下:

  1. 创建一个 git 仓库,随后创建:a、b、c、d 四个文件 image.png
  2. 随后对四个文件,分别依次执行:git add、git commit进行版本控制
  3. 随后使用git log —online查看版本记录 image.png
  4. 现在我们使用git reset —hard 版本号把代码回滚到:刚提交完 b 文件的时候 image.png
  5. 两个注意点:
注意点 1:git reset --hard会有如下动作:
   ① 切换版本区 HEAD (指针)指向
   ② 还原暂存区到对应版本
   ③ 还原工作区到对应版本
   执行git reset --hard之前,最好进行: git add 、git commit操作!
   --soft:重置HEAD到指定提交,所有的更改都会自动添加到暂存区,对工作区无影响。
   --mixed (默认值):重置HEAD到指定的提交,并且重置暂存区,对工作区无影响。
   --hard:重置HEAD到指定的提交,并且重置暂存区,重置工作区!
注意点 2:使用git reset --hard版本回滚后,使用git log只能看到当前版本之前的记录,
例如:刚才回到了13f46ca这个版本,那使用git log --online就会看到:

image.png

此时:看不见 c 文件和 d 文件的提交记录了,因为对于13f46ca 这个版本来说,
c 文件和 d 文件的提交记录属于未来,是看不到的,要想看到最完整的日志记录,
可以使用git reflog命令。  

image.png

13、修改提交**#**

git commit —amend 命令可以修改最近一次提交,它可以:

  1. 重新编辑上次的提交信息。
如果在一次提交后,意识到提交信息有误或不够详细,
可以使用 git commit --amend 来重新编辑上次提交信息
  1. 将新的更改添加到上次提交中。
如果在一次提交后,意识到忘记将某文件提交了,
可以先使用 git add 将这些遗漏的更改添加到暂存区,
然后通过 git commit --amend 将它们添加到上一个提交中。

场景演示(重新编辑上次的提交信息)

  1. 创建一个 a 文件,其内容如下(包含 4 行内容) image.png
  2. 随后对 a 文件进行版本控制,但提交信息编写有误 image.png
  3. 查看一下提交记录 image.png
  4. 随后使用git commit —amend命令进行修改提交,弹出 vim 编辑框,随后编辑好正确的提交信息,保存并退出 image.png
  5. 此时提示提交成功 image.png
  6. 随后查看提交日志如下: image.png

场景演示(将新的更改添加到上次提交中)

  1. 进行了一次提交后,查看提交记录如下: image.png
  2. 但发现 a 文件中少写了一些代码,随后我们补上了少写的代码,然后想对最近一次提交进行修改,执行git add -A后使用git commit —amend命令进行修改提交。 image.png
  3. 随后弹出 vim 编辑框,我们在编辑框里重新编写提交说明,随后保存并退出。 image.png
  4. 随后提交完毕,我们使用git log —online查看提交记录,发现提交已经被修改。 image.png

14、忽略文件**#**

在项目开发过程中有些文件不应该存储到版本库中,这个时候配置忽略这些文件。 git 中需要创建一个文件 『.gitignore』文件来设置忽略,『.gitignore』文件与.git 目录同级,常用规则如下:

内容 含义
temp 忽略任何路径下的名为 temp 的文件、文件夹。
*.log 忽略任何路径下以.log 结尾的文件。
/dist 忽略根目录下的 dist 文件,不会忽略其他目录下的 dist 文件

备注:.gitkeep文件可以把空文件夹提交

继续阅读

基于全文检索与主题相似度