一. 为什么要用版本控制系统
1. 更方便的存储版本
2. 恢复之前的版本
3. 更方便的进行对比
4. 协同合作
二. git.exe安装
三. 简单配置
没有进行配置会出现警示信息,通过命令配置
git config --global user.name "cnhkzyy" #配置用户名 git config --global user.email "1069966476@qq.com" #配置联系邮箱
查询最小用户配置
git config --global --list
四. 建立git仓库
1. 已有目录的时候
cd file_folder git init
(1) 已有一个目录,测试报告
(2) 进入测试报告目录,点击"Git Bash Here"
(3) 执行"git init",可以看到测试报告目录下出现了一个.git目录
这里面存储了版本控制信息
2. 没有目录的时候
cd file_folder git init projectsname #重新命名一个新的目录
在 测试git 目录下,执行git init demo,会生成一个demo的新目录,demo目录下的.git目录,保存着版本信息,demo下没有项目内容,我们可以添加项目内容
五. git配置优先级
git config --local local只对仓库有效。缺省等同于local
git config --global global对登录用户所有仓库有效
git config --system system对系统的所有用户有效
优先级:local > global > system
六. git版本提交
git add file #执行完会把文件存到临时空间
git add . #添加该目录下的所有文件
git commit -m "版本信息" #正式提交到git仓库
(1) 在demo目录下新建一个测试报告.txt文件,文件内容为"test"
(2) 把文件添加到暂存区
(3) 提交
(4) 查看提交
(1) 在本地新建一个readme.txt文件,文件内容为"欢迎来到git世界"
七. 版本状态查看
git status
git status -s 可以用简短的信息进行阐述
git status --short
(1) 往readme.txt里更新一段文字:"git是一个分布式的版本控制系统"
(2) git status,可以看到文件被更新,但没有被提交,readme.txt为红色
(3) 使用git add readme.txt提交到暂存区后,再次使用git status查看,发现,readme.txt变为绿色
(4) 使用git status -s 查看更简短的信息,发现只有一个绿色的M,M表示修改已被提交到暂存区
(5) 新添加一个文件,new_file.txt,使用 git status -s 查看,发现前面有个红色的??,??表示新添加的文件,还没有提交到暂存区
(6) 使用git add new_file.txt,将new_file.txt提交到暂存区,然后使用 git status -s 命令查看,发现前面有个绿色的A,A表示新添加的文件
(7) 正式提交到仓库,git commit -m "注释",这里我打的有点问题,一不小心跟成了文件名。然后使用git status -s 查看,发现没有内容了
八. git历史版本查看
git log 最简单的使用
git log --pretty=oneline 只显示一行
git log -p 显示版本之间的差异
git log -5 显示最近5个版本
git log -5 -p 显示最近5个版本及他们之间的差异
git log --stat 查看大体的统计信息
(1) git log查看最新三次提交的日志(时间顺序倒序)
(2) git log --pretty=oneline,显示简短的提交信息
(3) git log -p 查看版本之间的差异
(4) git log -2 查看最近提交的两个版本
(5) git log -2 -p
(6) git log --stat 查看大体的统计信息
九. 忽略文件gitignore
# 注释
glob 模式匹配,比较类似正则表达式匹配
* 星号,匹配0或者任意字符
[abc] 任何一个在括号内的字符
? 匹配一个任意字符
/ 结束指定目录
! 取反
(1) 借助vscode,新建下面几个文件和目录
(2) 编辑.gitignore文件,写入以下内容
(3) 所有更改暂存,然后提交,发现demo.pyc也提交了,有点诡异
十. 版本比对
git diff 在未提交到缓存区之前,比对版本之间的差异
git diff 老版本 新版本
git diff --staged 已经添加到暂存区的差异
git commit -a -m "注释" 添加并提交修改到git仓库
(1) 在未修改文件之前,git diff 发现无内容,在demo.py中新增 import time,然后执行 git diff,发现有内容了
(2) 在使用了 git add . 命令暂存之后,再使用 git diff,发现没内容了
(3) 修改demo.py,新增内容"time.sleep(2)",使用git commit -a -m "time sleep"可以一步到位,将修改内容添加到git仓库
(1) git diff 老版本commit哈希值 新版本commit哈希值 ,哈希值可以是一部分。如果想对比老版本和新版本的差异,git diff 新版本 老版本即可
(2) 在demo.py文件中加入一行 print("Hello World!"),然后git add . ,这时候使用 git diff --staged,发现了提交到暂存区后的差异
(3) 使用git commit 提交到git 仓库后,发现git diff --staged没有内容
十一. rm删除文件
git restore --file 暂存之前:不将文件添加到暂存,老的git版本是git checkout -- <file>
git restore --staged <file> 暂存之后:删除文件的暂存,老的git版本是git reset HEAD <file>
git rm file 添加到git仓库之后:删除文件,本地和版本控制系统都删了
git rm --cached file 添加到git仓库之后:删除文件,版本控制系统删了,本地还存在,如果想重新提交可以使用 git add和git commit
git rm *.pyc
(1) 在demp.py中新增一行代码,执行 git status
(2) 执行git checkout -- demo.py后发现那一行消失了
(3) 重新加入一行print("Hey"),提交到暂存区,再从暂存区删除,最后使用git status查看状态
(4) git rm 测试报告.txt,发现删除了本地没有了,git rm --cached new_file.txt,发现删除了本地仍然存在
(5) git rm .*pyc,删除所有的.pyc文件
(6) 删除后要git commit 提交一下
十二. mv移动文件
git mv 老文件名 新文件名
等价:
mv 老文件名 新文件名
git rm 老文件名
git add 新文件名
(1) 先创建一个doc目录,将readme.txt移动到doc下,并改名字为read.txt,最后提交到git仓库
(2) 将demo.py移动到doc/下,新的路径为doc/demo.py
删除旧的demo.py
将新的doc/demo.py添加到暂存区
提交到git仓库
十三. 文件补录
git commit --amend 有时候提交过一次记录只有,又修改了一次,仅仅是改动一些较少的内容,可以使用git commit --amend
(1) 新增了一条代码,这时候使用git commit -amend -a提交到git仓库
(2) 可以使用git diff 老版本 新版本 查看新老版本的差异
十四. 标签
放在生产环境的版本,需要迭代,一般需要打标签
git tag -a tagname -m "提交信息" 附录标签
git tag tagname 轻量标签
git tag -a tagname 补录标签
git show tagname
git tag
git tag -l "v1.8*"
来源:https://www.cnblogs.com/my_captain/p/12253023.html