git版本控制:从入门到精通

泄露秘密 提交于 2020-02-09 21:06:19

一. 为什么要用版本控制系统

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*"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!