Git 版本管理
本文主要参考:https://morvanzhou.github.io/tutorials/others/git/
希望对大家有帮助。
思维导图先走一波:
1、Git安装
Linux系统
使用 Linux 的朋友们, 大家肯定都很熟悉怎么在 Linux 上装东西, 所以只要找到你的 Terminal, 并输入以下指令就可以啦:
# 如果你的 Linux 是 Ubuntu:
$ sudo apt-get install git-all
# 如果你的 Linux 是 Fedora:
$ sudo yum install git-all
Mac系统
Git 已经为 Mac 用户做好了一个安装包, 我们可以在这里下载并安装 https://git-scm.com/download/mac
Windows 系统
Git 也为 Windows 系统提供了简易的 .exe
安装包, 直接从这里下载并安装就可以了: https://git-scm.com/download/win
2、创建/修改版本库
2.1创建第一个版本库
创建版本库
我们先要确定要把哪个文件夹里的文件进行管理. 比如说我桌面上的一个叫 gitTUT
的文件夹. 然后在 Terminal (Windows 的 git bash) 中把当前目录调到这个文件夹 gitTUT
, 我的做法是这样:
$ cd ~/Desktop/gitTUT
为了更好地使用 git, 我们同时也记录每一个施加修改的人. 这样人和修改能够对应上. 所以我们在 git 中添加用户名 user.name
和 用户 email user.email
:
$ git config --global user.name "Morvan Zhou"
$ git config --global user.email "mz@email.com"
然后我们就能在这个文件夹中建立 git 的管理文件了:
$ git init
# Initialized empty Git repository in /Users/MorvanZhou/Desktop/gitTUT/.git/
因为这个文件夹中还没有任何的文件, 它返回出来一句话告诉我们已经建立了一个空的 git 管理库.
添加文件管理
通常我们执行 $ ls
就能看到文件夹中的所有文件, 不过 git 创建的管理库文件 .git
是被隐藏起来的. 所以我们要执行这一句才能看到被隐藏的文件:
$ ls -a
# . .. .git
建立一个新的 1.py
文件:
$ touch 1.py
现在我们能用 status
来查看版本库的状态:
$ git status
# 输出
On branch master # 在 master 分支
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
1.py # 1.py 文件没有被加入版本库 (unstaged)
nothing added to commit but untracked files present (use "git add" to track)
现在 1.py
并没有被放入版本库中 (unstaged), 所以我们要使用 add
把它添加进版本库 (staged):
$ git add 1.py
# 再次查看状态 status
$ git status
# 输出
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: 1.py # 版本库已识别 1.py (staged)
如果想一次性添加文件夹中所有未被添加的文件, 可以使用这个:
$ git add .
提交改变
我们已经添加好了 1.py
文件, 最后一步就是提交这次的改变, 并在 -m
自定义这次改变的信息:
$ git commit -m "create 1.py"
# 输出
[master (root-commit) 6bd231e] create 1.py
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 1.py
流程图
整个上述过程可以被这张 git 官网上的流程图直观地表现:
[外链图片转存失败(img-g43Llull-1563455601312)(C:\Users\Antime\AppData\Roaming\Typora\typora-user-images\1563450135559.png)]
2.2记录修改(log&diff)
修改记录log
之前我们以Morvan Zhou
的名义对版本库进行了一次修改, 添加了一个 1.py
的文件. 接下来我们就来查看版本库的些施工的过程. 可以看到在 Author
那已经有我的名字和 email 信息了.
$ git log
# 输出
commit 13be9a7bf70c040544c6242a494206f240aac03c
Author: Morvan Zhou <mz@email.com>
Date: Tue Nov 29 00:06:47 2016 +1100
create 1.py # 这是我们上节课记录的修改信息
如果我们对1.py
文件进行一次修改, 添加这行代码:
a = 1
然后我们就能在 status
中看到修改还没被提交的信息了.
$ git status
# 输出
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: 1.py # 这里显示有一个修改还没被提交
no changes added to commit (use "git add" and/or "git commit -a")
所以我们先把这次修改添加 (add) 到可被提交 (commit) 的状态, 然后再提交 (commit) 这次的修改:
$ git add 1.py
$ git commit -m "change 1"
# 输出
[master fb51216] change 1
1 file changed, 1 insertion(+) # 提示文件有一处添加
再次查看 log
, 现在我们就能看到 create 1.py
和 change 1
这两条修改信息了. 而且做出这两条 commit
的 ID, 修改的 Author
, 修改 Date
也被显示在上面.
$ git log
# 输出
commit fb51216b081e00db3996e14edf8ff080fab1980a
Author: Morvan Zhou <mz@email.com>
Date: Tue Nov 29 00:24:50 2016 +1100
change 1
commit 13be9a7bf70c040544c6242a494206f240aac03c
Author: Morvan Zhou <mz@email.com>
Date: Tue Nov 29 00:06:47 2016 +1100
create 1.py
如果删除一部分代码, 也会被记录上, 比如把 a = 1
改成 a = 2
, 再添加一个 b = 1
.
a = 2
b = 1