$ git config --global user.name "name"
$ git config --global user.email [email protected]
--system 所有用户 系统
--global 用户目录下的 用户
无 当前项目
git init
hooks 目录包含客户端或服务端的钩子脚本;
info 包含一个全局性排除文件
logs 保存日志信息
objects 目录存储所有数据内容;
refs 目录存储指向数据的提交对象的指针(分支)
config 文件包含项目特有的配置选项
description 用来显示对仓库的描述信息
HEAD 文件指示目前被检出的分支
index 文件保存暂存区信息
git 对象
clear :清除屏幕
echo 'test content':往控制台输出信息 echo 'test content' > test.txt
ll :将当前目录下的 子文件&子目录平铺在控制台
find 目录名: 将对应目录下的子孙文件&子孙目录平铺在控制台
find 目录名 -type f :将对应目录下的文件平铺在控制台
rm 文件名 : 删除文件
mv 源文件 重命名文件: 重命名
cat 文件的 url : 查看对应文件的内容
vim 文件的 url(在英文模式下)
按 i 进插入模式 进行文件的编辑
按 esc 键&按:键 进行命令的执行
q! 强制退出(不保存)
wq 保存退出
set nu 设置行号
向数据库写入内容 并返回对应键值
git hash-object -w fileUrl : 生成一个key(hash值):val(压缩后的文件内容)
键值对存到.git/objects
git hash-object 文件路径
返回对应的键值
查看 Git 是如何存储数据的
find .git/objects -type f
根据键值拉取数据
git cat-file -p +(hash值)
git cat-file -t
利用 cat-file -t 命令,可以让 Git 告诉我们其内部存储的任何对象类型(blob)
git update-index --add --cacheinfo 100644 hash test.txt :
往暂存区添加一条记录(让git对象 对应 上文件名)存到.git/index
git write-tree : 生成树对象存到.git/objects
git ls-files -s 查看暂存区
echo 'first commit' | git commit-tree treehash : 生成一个提交对象存到.git/objects
对以上对象的查询
git cat-file -p hash : 拿对应对象的内容
git cat-file -t hash : 拿对应对象的类型
git ls-files -s
在工作目录中新增文件
git status 查看状态
git add ./ (先将工作目录的修改做成git 对象 放到版本库 然后在放到暂存区)
git commit -m "注释"
在工作目录中修改文件
git status 查看状态
git add ./ (先将工作目录的修改做成git 对象 放到版本库 然后在放到暂存区 每一个文件的修改都对应一个 git对象)
git commit -m "注释"
git rm 要删除的文件 git mv 老文件 新文件
git status git status
git commit -m “注释” git commit -m “注释”
git status : 查看工作目录中文件的状态(已跟踪(已提交 已暂存 已修改) 未跟踪)
git diff : 查看未暂存的修改
git diff --cache : 查看未提交的暂存
git log --oneline : 查看提交记录
查看项目分叉历史
git log --oneline --decorate --graph --all
配置别名
git config --global alias.lol "log --oneline --decorate --graph --all"
分支的本质其实就是一个提交对象!!!
HEAD:
是一个指针 它默认指向master分支 切换分支时其实就是让HEAD指向不同的分支
每次有新的提交时 HEAD都会带着当前指向的分支 一起往前移动
git log --oneline --decorate --graph --all : 查看整个项目的分支图
git branch : 查看分支列表
git branch -v: 查看分支指向的最新的提交
git branch name : 在当前提交对象上创建新的分支
git branch name commithash: 在指定的提交对象上创建新的分支
git checkout name : 切换分支
git branch -d name : 删除空的分支 删除已经被合并的分支
git branch -D name : 强制删除分支
创建工作目录 对工作目录进行修改
git add ./
git hash-object -w 文件名(修改了多少个工作目录中的文件 此命令就要被执行多少次)
git update-index ...
git commit -m "注释内容"
git write-tree
git commit-tree
最佳实践: 每次切换分支前 当前分支一定得是干净的(已提交状态)
坑:
在切换分支时 如果当前分支上有未暂存的修改(第一次) 或者 有未提交的暂存(第一次)
分支可以切换成功 但是这种操作可能会污染其他分支
动三个地方
HEAD
暂存区
工作目录
git stash 命令会将未完成的修改保存到一个栈上,而你
可以在任何时候重新应用这些改动(git stash apply)
git stash list:查看存储
git stash apply stash@{2}
如果不指定一个储藏, Git 认为指定的是最近的储藏
git stash drop 加上将要移除的储藏的名字来移除它
git stash pop 来应用储藏然后立即从栈上扔掉它
工作区
如何撤回自己在工作目录中的修改 : git checkout --filename
暂存区
如何何撤回自己的暂存 : git reset HEAD filename
版本库
如何撤回自己的提交 : git commit --amend
1.注释写错了,重新给用户一次机会改注释
git log:
git reflog : 主要是HEAD有变化 那么git reflog机会记录下来
三部曲
第一部: git rest --soft HEAD~ (--amend)
只动HEAD (带着分支一起移动)
第二部: git reset [--mixed] HEAD~
动HEAD (带着分支一起移动)
动了暂存区
第三部: git reset --hard HEAD~
动HEAD (带着分支一起移动)
动了暂存区
动了工作目录E:\前端\Vue\day6\笔记.txt
git checkout commithash & git reset --hard commithash
1. checkout只动HEAD --hard动HEAD而且带着分支一起走
2. checkout对工作目录是安全的 --hard是强制覆盖工作目录
git checkout commithash
git checkout --filename
相比于git reset --hard commitHash --filename
第一 第二步都没做
只会动了工作目录
git checkout commithash
将会跳过第 1 步
更新暂存区 E:\前端\Vue\day6\笔记.txt
更新工作目录
git reset HEAD filename (reset 将会跳过第 1 步)
动了暂存区