1. 更方便的存储版本git
2. 恢复以前的版本github
3. 更方便的进行对比正则表达式
4. 协同合做缓存
没有进行配置会出现警示信息,经过命令配置bash
git config --global user.name "cnhkzyy" #配置用户名 git config --global user.email "1069966476@qq.com" #配置联系邮箱
查询最小用户配置分布式
git config --global --list
1. 已有目录的时候测试
cd file_folder
git init
(1) 已有一个目录,测试报告fetch
(2) 进入测试报告目录,点击"Git Bash Here"url
(3) 执行"git init",能够看到测试报告目录下出现了一个.git目录spa
这里面存储了版本控制信息
2. 没有目录的时候
cd file_folder
git init projectsname #从新命名一个新的目录
在 测试git 目录下,执行git init demo,会生成一个demo的新目录,demo目录下的.git目录,保存着版本信息,demo下没有项目内容,咱们能够添加项目内容
git config --local local只对仓库有效。缺省等同于local
git config --global global对登陆用户全部仓库有效
git config --system system对系统的全部用户有效
优先级:local > global > system
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 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 查看大致的统计信息
# 注释
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没有内容
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 提交一下
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 show tagname
git tag 显示全部的标签
git tag -a tagname 补录标签
git tag -l "v1.8*" 匹配全部以v1.8开头的标签
git tag -d tagname 删除某个标签
(1) 打附录标签
(2) 查看标签
(3) 打轻量标签
(4) 查看轻量标签
(1) 显示全部的标签
(2) 匹配全部以v开头的标签
(3) 使用git log,查看全部提交记录,想把Hello World这个提交打个标签,使用git tag -a v0.0.0 ed3350
(4) 删除某一标签qingliangv1
git checkout 版本号
git reflog 查看全部的日志
git checkout 标签名
(1) git checkout 版本号 检出到某一版本,此时使用git log,只能查看当前版本以后的记录
(2) 要想查看全部记录(包括以前的)使用 git reflog
(3) 根据标签名检出
git config --global alias.st 'status' 给status起别名st
git config --global alias.last 'log -1 HEAD' 给查案最后一行记录起别名 git last
git config --global alias.logol 'log --pretty=oneline' 给一行显示全部记录起别名git logol (未生效)
(1) 给git status设置别名 git st
(2) 给查看最后一条记录,起别名git last
git remote 查看远程地址
git remote -v
git remote add 名称 远程url
(1) 添加远程地址
git remote show 远程名字
git push 远程名字 master(分支名称)
git fetch 远程名字
git pull 远程名字
(1) git remote show git_study
(2) git push 仓库名 分支名
(3) 在github项目下建立一个新的文件test_fetch,git fetch 远程名字,git fetcn经过用在多个分支的状况,它会手动进行分支的合并,在只有一个分支的状况下,建议使用git pull,git pull会自动合并
刚刚新的文件没有显示在本地,是由于没有合并
本地也有了
git remote rename 旧名字 新名字
git remote rm 远程名字
(1) 修改远程名字为study
(2) 删除远程仓库
(3) 从新添加远程仓库
git clone url
(1) 在本地新建一个new_project的目录,在里面打开git bash,而后使用git clone 项目url,能够克隆远程项目到本地