Git(分布式版本控制系统)

Git

原理介绍

  Git:是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。特别适合于企业级项目的使用,因此也成为了程序员必备技能之一。Git中的大多数语句是Linux语句,因为最初它就是由Linux之父Linus Torvalds帮助管理 Linux 内核开发而开发的。

Git特点

  直接记录快照,而非差异比较,速度非常快。
  几乎所有操作都是本地执行,方便管理。
  时刻保存数据完整性,保证信息的不丢失。
  适合于分布式开发,服务器压力小。
  开发者之间可以容易的解决冲突。

Git关系图

  Git的逻辑较为复杂,一定要理解逻辑图,并记住状态之间的相互转换。
0

Git应用

创建管理员身份

1
2
3
# git config --global user.name XXX 创建管理员用户名XXX

# git config --global user.email YYY 创建管理员邮箱YYY

将文件夹变成管理库文件夹

1
# git init 创建管理库文件夹

1

在文件夹中添加文件

1
2
# touch xxx 添加文件xxx
touch dm01.py

2

查看文件的状态

1
2
3
# git status 查看文件状态(详细叙述)

# git status -s 查看文件状态(简写)

3

将文件加入文件管理库

1
2
3
4
# git add xxx 将xxx文件加入文件管理库
git add dm01.py

# git add . 将所有文件加入文件管理库

4

提交文件

1
2
3
4
5
6
7
8
9
10
# git commit -m xxx yyy 提交yyy文件到xxx版本中,如果只有xxx,则提交当前所有可提交文件至xxx版本
git commit -m dm01.py

# git commit --amend --no-edit xxx 将xxx文件添加到最新的版本

# git commit --amend -m xxx 为最后的版本添加xxx说明

# git commit --amend 编辑文本说明

# git commit -am xxx 将所有文件先添加为Staged状态,再进行提交,等价于git add . + git commit -m xxx

5

编辑文件

1
2
3
4
# vim xxx 用vim编辑xxx文件,文件状态由Unmodified变为Modified,再次提交时需要先add变成Staged状态
vim dm01.py

print('First addition!')

6

查看之前已提交的更改

1
2
3
4
5
6
7
# git log 查看文件的具体信息

# git log --oneline 查看文件的简要信息

# git log --graph 以图的形式查看文件的具体信息

# git log --graph --oneline 以图的形式查看文件的简要信息

7

查看之前更改的内容

1
2
3
4
5
6
7
8
9
10
11
# git diff 查看Modified与之前提交的区别

# git diff --cached 查看Stage与之前提交的区别

# git diff HEAD 同时有Modified和Stage状态,查看总区别

# git diff ID1, ID2 查看两个历史快照的区别,ID1为之前的,ID2是后面的,其中输入git log --oneline中显示在最前面的编号即为ID
git diff 84cefee 521a873

# git diff ID 比较ID与当前目录内容
git diff 84cefee

8

将文件从Staged状态返回至Modified状态

1
2
3
4
5
6
vim dm01.py # 将dm01状态变为红色的M,即为Modified状态

git add dm01.py #将dm01从红色的M变成绿色的M,即为Staged状态

# git reset xxx 将xxx从Staged状态返回至Modified状态
git reset dm01.py

9

查看每一步的变化

1
# git reflog 查看对文件夹进行的所有操作,并且可以得到ID号和对应的指针

10

回到过去

1
2
3
4
5
# git reset --method HEAD~n 回到前n个版本,method=soft为回滚快照,移动HEAD指向(仓库区域),method=mixed(默认)为将快照回滚到临时区域,method=hard将快照还原到工作区,可以通过打开文件看到

# git reset --method ID/point 回到指定的文件号/指针,method同上

# git checkout ID -- xxx 对xxx文件回到ID状态,内容也会改变

11

创建分支

1
2
3
4
5
6
7
# git branch 查看所有分支和当前所处分支

# git branch xxx 创建xxx分支
git branch br01

# git checkout -b xxx 创建xxx分支
git checkout -b br02

12

切换分支

1
2
# git checkout xxx 切换到xxx分支
git checkout br01

13

删除分支

1
2
3
4
# git branch -d xxx 删除xxx分支,删除时不能位于该分支,该方法不能删除未合并的分支
git branch -d br02

# git branch -D xxx 删除未合并的xxx分支

14

合并分支

1
2
3
4
# git merge xxx 在当前分支下,合并xxx分支
git merge br01

# 如果在新分支里面修改提交的文件,在原分支也经过了修改提交,则会出现报错,需要手动修改文件内容,然后再添加提交即可

15

查看已合并的分支和未合并的分支

1
2
3
# git branch --merged 查看已合并的分支

#git branch --no-merged 查看未合并的分支

16

换基操作

1
# git rebase xxx 当一个分支添加功能时,此时如果主分支发生修改,开发人员想基于修改过的主分支接着添加功能,可以使用换基操作,紧接着xxx之后进行修改

暂存区

1
2
3
4
5
6
7
8
9
# git stash 将现在的文件放到暂存区中(分支中存在未提交的文件,无法切换分支。此时可以将现在的文件放到暂存区中,然后切换分支)。

# git stash list 查看暂存区的文件

# git stash apply stash@{n} 从暂存区中恢复编号为n的文件(默认为最近一个),暂存区文件不变

# git stash drop stash@{n} 从暂存区中删除编号为n的文件(默认为最近一个)

# git stash pop 从暂存区中取出最近的一个文件,暂存区中少一个文件,类似于栈的pop,等价于git stash apply + git stash drop

17

链接到GitHub

1
2
3
4
5
# 打开GitHub,并新建一个仓库

# git remote add origin xxx 链接到远程xxx地址,即为GitHub仓库地址

# git push -u origin yyy 将yyy分支推上去,一般是master分支

Git三个区域

1
2
3
4
5
# 工作区域:存放项目的地方,可以观察到的文件夹即为工作区域,修改的内容可以通过打开文件看到

# 临时区域:stage区域,用于临时存放改动,即将提交的区域

# 仓库区域:最终存放的版本数据,HEAD指向最终提交的内容

删除文件

1
2
3
4
5
6
# git rm 删除工作区域和临时区域中的文件,但是仓库区域依然可以看到

# git rm -f 强行删除工作区域和临时区域中的文件
git rm -f dm01.py

# git rm --cached 删除临时区的文件

18

修改文件名

1
2
# git mv old_name new_name 将原文件名old_name换为new_name
git mv dm02.py dm03.py

19

Git小结

  Git作为当下最红的分布式版本控制系统,使得程序员之间的协作更为方便,因此各大公司都使用Git作为一项必备技能。因为Git的命令大多为Linux语言,所以习惯于Windows平台的用户需要多多练习。

-------------本文结束感谢您的阅读-------------
0%