Git Guide

Git版本控制

关于Git版本控制的一些笔记,以及在windows下的一些常规操作

Note

1. 三棵树:工作目录、暂存区域和Git仓库

Working Directory <-> Stage(Index) <-> Repository(Head)
工作目录:平时存放项目的地方
暂存区域:一个文件,存放临时的改动,即将提交到仓库的列表信息
Git仓库:最终存放版本数据的位置(HEAD指针指向最新版本)

2. 将每个版本独立保存
3. Git管理的文件的三种状态
  • 已修改(modified)
  • 已暂存(staged)
  • 已提交(committed)

Git的工作流程

一般工作流程

  1. 在工作目录中添加、修改文件
  2. 将需要进行版本管理的文件放入暂存区域
  3. 将暂存区域的文件提交到Git仓库
1.在工作目录中添加、修改文件(自己操作)
1
2
3
4
C:\Users\Administrator\Documents\GitHub>cd MyProject

C:\Users\Administrator\Documents\GitHub\MyProject>git init
Initialized empty Git repository in C:/Users/Administrator/Documents/GitHub/MyProject/.git/

2.将需要进行版本管理的文件放入暂存区域(没提示信息即ok)

1
C:\Users\Administrator\Documents\GitHub\MyProject>git add README.md
3.将暂存区域的文件提交到Git仓库

commit命令 双引号内是本次提交的说明

1
2
3
4
C:\Users\Administrator\Documents\GitHub\MyProject>git commit -m "add a readme file"
[master (root-commit) cbdab70] add a readme file
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
实战

将工作目录的文件放到Git仓库只需要两步

  • -git add 文件名
  • -git commit -m “你干了啥,新版本注释”

查看状态

1
git status

显示Untracked files,工作目录新添加、修改的文件而未添加到暂存区域或提交到Git仓库

1
2
3
4
5
6
7
8
C:\Users\Administrator\Documents\GitHub\MyProject>git add LICENSE

C:\Users\Administrator\Documents\GitHub\MyProject>git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file: LICENSE

回滚

1
git reset HEAD

可以让最近一次提交到Git仓库的文件回到暂存区域

1
git reset HEAD <file>

可以让file文件从Git仓库回到暂存区域

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
C:\Users\Administrator\Documents\GitHub\MyProject>git reset HEAD

C:\Users\Administrator\Documents\GitHub\MyProject>git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)

LICENSE

nothing added to commit but untracked files present (use "git add" to track)

C:\Users\Administrator\Documents\GitHub\MyProject>git commit -m "add a LICENSE file"
On branch master
Untracked files:
LICENSE

nothing added to commit but untracked files present

C:\Users\Administrator\Documents\GitHub\MyProject>git add LICENSE

C:\Users\Administrator\Documents\GitHub\MyProject>git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

new file: LICENSE


C:\Users\Administrator\Documents\GitHub\MyProject>git commit -m "add a readme file"
[master 9ceaa7a] add a readme file
1 file changed, 19 insertions(+)
create mode 100644 LICENSE

C:\Users\Administrator\Documents\GitHub\MyProject>git status
On branch master
nothing to commit, working tree clean

Note:红色表示在工作目录(?);绿色表示在暂存区域,等待被提交。

是否?你查看了工作目录的status,那么文件就默认到暂存区域了,add就提交到Git仓库了

用提交到Git仓库的文件,覆盖工作目录的文件变化

1
git checkout -- <file>

file,如”modified: LICENSE”

查看历史提交

1
git log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
C:\Users\Administrator\Documents\GitHub\MyProject>git log
commit 76b5f782d7443442233ae5e050d3c4c8f71968b7
Author: 2011301060014@whu.edu.cn <2011301060014@whu.edu.cn>
Date: Thu Nov 9 09:00:45 2017 +0800

change the LICENSE file

commit 9ceaa7aea9f293c1189d3bcaf42f653d102a905b
Author: 2011301060014@whu.edu.cn <2011301060014@whu.edu.cn>
Date: Wed Nov 8 21:39:24 2017 +0800

add a readme file

commit cbdab700463d0b214c6f4bb08cc6bba9d30fac41
Author: 2011301060014@whu.edu.cn <2011301060014@whu.edu.cn>
Date: Wed Nov 8 20:45:23 2017 +0800

add a readme file

C:\Users\Administrator\Documents\GitHub\MyProject>

回到过去

参考”reset&checkout.png”

1
2
3
4
5
sequenceDiagram
Working Directory->>Stage: add
Stage->>Respository: commit
Respository->>Stage: reset
Stage->>Working Directory: checkout

附录 – Windows初次使用Git前的配置

在命令行模式里输入以下命令:

1
2
-git config -- global user.name "username"
-git config -- global user.email "mail"

然后输入

1
git config --list

出现邮箱和用户名即ok