yingxy123 发表于 2018-8-24 11:44

Git 的基本操作

本帖最后由 yingxy123 于 2018-8-24 11:46 编辑

#### 1. 本地库初始化

##### 1.1 命令

```shell
git init
```

##### 1.2 注意

> .git 目录中存放的是本地库相关的子目录和文件,不能删除也不要修改

#### 2. 设置签名

##### 2.1 形式

- 用户名:YoYing
- Email地址: yingxy123@163.com

##### 2.2 作用

> 区分不同开发人员的身份

##### 2.3 注意

> ##### 这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系

##### 2.4 两种方式

- 项目级别/仓库级别:仅在当前本地库范围内有效

- 命令

    ```shell
    git config user.name YoYing
    ```

    ```shell
    git config user.email yingxy123@163.com
    ```


- 系统用户级别:登录当前操作系统的用户范围

- 命令

    ```shell
    git config --global user.name YoYing
    ```

    ```shell
    git config --global user.email yingxy123@163.com
    ```

- 信息保存在用户根目录的 ~/.gitconfig 文件中

- 优先级:就近原则,项目级别优先于系统用户级别,必须有其中一个

#### 3. 添加提交以及查看状态

##### 3.1 添加操作

- 命令

```shell
git add
```

- 作用

> 将工作区的“新建/修改” 文件添加到暂存区

##### 3.2 状态查看操作

- 命令

```shell
git status
```

- 作用

> 查看工作区、暂存区状态

##### 3.3 提交操作

- 命令

```shell
git commit -m "commit message"
```

- 作用

> 将暂存区的内容提交到本地库

##### 3.4 查看历史操作

- 命令 1

```shell
git log --pretty=oneline
```

- 命令 2

```shell
git reflog
```

#### 4. 前进后退历史版本操作

##### 4.1 本质

> 将 HEAD 指针进行移动

##### 4.2 基于索引值操作

- 命令

```shell
git reset --hard [部分索引值]
```

##### 4.3 基于 ^ 和 ~ 符号操作

- 说明

> 该符号操作只能后退,不能前进

- 命令

```shell
git reset --hard HEAD^^^^
```

```shell
git reset --hard HEAD~4
```

##### 4.4 reset 的参数说明

- --soft 参数

> 仅仅移动本地库的 HEAD 指针

- --mixed 参数

> 在本地库移动 HEAD 指针,重置暂存区

- --hard 参数

> 在本地库移动 HEAD 指针,重置暂存区,重置工作区

#### 5. 删除文件与文件找回

##### 5.1 删除文件

- 命令

```shell
rm aaa.txt
```

```shell
git add aaa.txt
```

```shell
git commit -m "delete new file"
```

- 找回命令

```shell
git reset --hard a5bfe5e
```

##### 5.2 添加到暂存区的删除文件找回

- 命令(现在该删除文件在暂存区,还没有提交到本地库)

```shell
git add bb.txt
```

```shell
git commit -m "add bb.txt"
```

```shell
rm bb.txt
```

```shell
git add bb.txt
```

- 找回

```shell
git reset --hard HEAD
```

##### 5.3 删除文件并找回

- 前提: 删除之前,文件存在时的状态已经提交到了本地库

- 操作:

```shell
git reset --hard [指针位置]
```

#### 6. 比较文件

##### 6.1 比较工作区和暂存区文件

- 命令

```shell
git diff [文件名]
```

- 说明

> 如果不指定文件名,表示比较多个文件

##### 6.2 比较工作区和本地库历史文件

- 命令

```shell
git diff [本地库历史版本] [文件名]
```

- 说明

> 如果不指定文件,表示比较多个文件

#### 7. 分支

##### 7.1 什么是分支

- 在版本控制过程中,使用多条线同时推进多个任务

##### 7.2 分支的好处

- 同时并行推进多个功能的开发,提高开发效率
- 各个分支在开发过程中,如果某一支开发失败,不会对其他分支有任何影响

##### 7.3 创建分支

- 命令

```shell
git branch amq
```

##### 7.4 查看分支

- 命令

```shell
git branch -v
```

##### 7.5 切换分支

- 命令

```shell
git checkout amq
```

##### 7.6 合并分支

- 切换到需要修改的分支上(被合并,增加新内容)

```shell
git checkout master
```

- 执行 merge 命令,将 amq 的修改的内容 merge 到 master 分支上

```shell
git merge amq
```

##### 7.7 解决分支冲突

- 如果在不同的分支同时修改相同的文件,使用 merge 的时候会有冲突

- 删除上述特殊标记符,使用 add 命令说明已经解决冲突了

```shell
git add bb.txt
```

- 提交

```shell
git commit -m "merge success"
```

yingxy123 发表于 2018-8-24 11:47

项目一直用 Git,最近有时间闲下来好好学习一下基础,有不对的地方还请大家指出来。一起进步。

小小学生 发表于 2018-8-24 11:58

编辑这些也是很不容易了 支持一下

king6725 发表于 2018-8-24 12:03

先占个坑不拉屎

叶泉 发表于 2018-8-24 12:19

Ganlv 发表于 2018-8-24 13:05

对于我我只需要会3个指令
git init
git clone
git gui
前两个一个是创建仓库,一个是克隆仓库,最后一个是打开图形界面用图形界面来操作git

1634091415 发表于 2018-8-24 13:34

支持一下

xianligong 发表于 2018-8-24 14:03

学习了,谢谢分享。

123456xzp 发表于 2018-8-24 22:07

楼主这是用markdown写的吗,怎么在吾爱里编辑?

真爱贤 发表于 2018-8-25 12:08

哈哈,我都是用的图形界面的
页: [1] 2
查看完整版本: Git 的基本操作