安装完毕进行初始化
//配置用户名
git config --global user.name 用户名
//配置用户邮箱
git config --global user.email 用户邮箱
//检查已经有的配置信息
git config --list
//查看当期版本
git --version
//生成一个仓库
git init
常用的Linux命令
1.【clear】 清除屏幕
2.【echo】 往控制台输出信息
3.【ll】 将当前文件下的子文件和子目录平铺在控制台
4.【find 目录名】 查看指定目录下的所有的目录,以及目录下的文件
5.【find 目录名 -type f】 将对应目录下的文件平铺在控制台
6.【rm 文件名】 删除文件名
7.【MV 源文件 重命名文件】重命名文件
8.【cat 文件的url 】查看文件的内容
9.【vim编辑器修改文件】
- 【i】进入插入模式,进行文件编辑
- 【esc】退出插入模式
- 【:wq】保存并退出
- 【q!】强制退出,不保存
- 【set nu】显示行号
三个区域
工作区
暂存区
版本区
对象
git对象
树对象
提交对象
git最基本的一套操作流程
//在工作目录进行初始化
git init
//将文件添加到暂存区(已跟踪状态)
git add [file1] [file2] ...
【工作目录的文件分为已跟踪和未跟踪状态,已跟踪状态又分为,已修改、已暂存、已提交,三个状态】
//将暂存区内容添加到仓库中
git commit -m ""
//查看文件的状态
git status
【如果对一个文件进行了修改操作之后,想要提交修改后的版本,则需要再使用[git add]命令来讲修改后的文件添加到暂存区,这样提交的文件才是修改后的版本】
git高层命令
命令 | 作用 | 备注 |
---|---|---|
git diff | 列出文件中已经修改但未暂存的内容 | 绿色 |
git status | 查看文件的状态 | 红色,表示修改已经修改了,还未暂存;绿色表示已经暂存了 |
git diff --cached || git diff --staged | 查看文件中那些内容已经暂存起来了,但还未提交 | 绿色,还未暂存的内容不会显示,只会显示暂存 的内容;已经提交的是白色显示 |
git commit -m 描述信息 || git commit | 提交文件,第二种方式会进入vim编辑器,在里面添加文件的描述信息 | |
git commit -a | 跳过git add暂存这个步骤,直接提交 | 跟踪过[git add]的文件才能使用-a参数 |
mv 源文件 重命名文件 | 重命名一个文件,重命名之后要统一进行[git add]操作,之后再提交 | 使用Linux命令重命名之后,git会认为是删除源文件,新建一个重命名文件 |
git log | 查看日志 | 查看操作的历史记录 |
git log --pretty=oneline | 让历史记录一行一行的显示 | |
git rm [file] | 删除文件,不用再[git add],直接提交 | 工作目录中也会删除,删除之后记得提交 |
git ls-files -s | 查看暂存区中的文件 | |
git cat-file -[参数] [要查看的文件的哈希值] | 查看暂存区中的文件中的具体内容 | 参数为p,查看内容 参数为t,查看文件类型 |
git分支【杀手功能】
- 分支就是一个活动的指针,指向当前的提交对象
- master是默认有的分支【主分支】,永远指向我们最新的那一次提交
命令 | 作用 | 备注 |
---|---|---|
git branch | 获取当前分支列表 | |
git branch [name] | 创建一个分支 | [name]:分支 571faf1 (HEAD -> master, boot) delete toTest.txt |
git checkout [name] | 切换分支 每次切换分支前,当前分支一定得是已提交状态, 如果不是已提交状态,存在着修改未暂存或者暂存未提交, 则会将这些状态【存在着修改未暂存或者暂存未提交】 的文件一起带到切换的目标分支, 污染目标分支的文件目录 | 571faf1 (HEAD -> boot, master) delete toTest.txt 切换分支会改变3个地方:1.工作目录;2.暂存区;3.heade 文件只要提交过一次,在修改里面的内容 然后没有保存或者暂存了没有提交,此时尝试切换到其他分支,是不让切换的; 但是如果是新建的一个文件,没有提交过的, 修改了未暂存或者暂存了未提交, 此时切换到别的分支 则会将这些状态【存在着修改未暂存或者暂存未提交】 的文件一起带到切换的目标分支, 污染目标分支的文件目录 |
git config --global alias.[name] “源命令” | 给命令起别名 | [name]表示源命令的别名称,源命令除了只有一个单词的情况,都要加双引号 |
git log --oneline --decorate --graph --all | 查看全部分支的日志 | 给此命令起别名为loglist: git config --global alias.loglist log --oneline --decorate --graph --all【注意,源命令中要去掉git】 |
git branch -D [分支名称] | 删除分支 | 强制删除,删除之后整个分支日志列表中的相关内容也会删除 |
git branch -v | 查看每一个分支的最后一次提交信息 | master 571faf1 delete toTest.txt |
git branch [分支名称] 哈希值 | 创建一个分支指向对应的提交对象 | 切换到指定的【哈希值】对应的提交时的状态 |
git checkout -b [分支名称] | 创建并且切换到该分支 | |
git merge [分支名称] | 合并分支 | 在主分支上合并其他分支,如果产生冲突,调整了代码之后一定要记得[git add]和[git commise -a] |
git ls-files -s | 查看暂存区的内容 | |
git stash | 会把所有未提交的修改(包括暂存的和非暂存的)都保存起来 | |
git stash apply [存储的名称] | 将暂时存储的内容拿出来,拿出来之 后原来的存储还在,要进行删除操作 | |
git stash drop [存储的名称] | 删除暂时存储的空间 | |
git stash pop | 去除暂时存储的内容,并将存储空间删除 | |
git stash list | 查看暂时存储空间 | |
后悔药
工作区
- 撤回自己在工作目录中的修改
- git checkout [filename] 撤回修改
暂存区
- 撤回暂存
- git reset HEAD [filename] 撤回暂存操作
版本库
- 撤回自己的提交
- git commit --amend
- 可以重新修改注释,再提交
reset三部曲
第一部
- git reset --soft HEAD~ 带着分支将HEAD移动上一个提交对象
- git reset --soft 哈希值 带着分支将HEAD移动到指定的提交对象
- 只会改变HEAD的内容
- 工作目录中的内容不会改变
第二部
- git reset --mixed HEAD~
- 会改变HEAD的内容
- 会改变暂存区的内容,暂存区的内容会变成移动到的提交对象提交时候的状态
- git ls-files -s ,查看暂存区中的文件
- git cat-file -p,查看暂存区中的文件中的内容
- 工作目录的内容不会改变
第三部
- git reset --hard HEAD
- git reset --hard [哈希值]
- 会改变HEAD的内容
- 会改变暂存区的内容
- 会改变工作目录的内容
数据恢复
- 可以使用git reset --hard [哈希值]到指定的提交对象节点
- 可以在指定的提交对象节点,创建一个分支来指向塔
打tag
- 创建tag
- git tag [v1.0]
- git tag [v1,0] [哈希值],在指定的提交节点打tag
- 查看tag
- git show
- git show[v1.0]
- 删除tag
- git tag -d [v1.0]
- 切换到指定的tag节点
- git checkout [v1.0]
- 切换之后要创建一个分支来指向此tag节点
eslint
-
安装eslint
- npm init -y,创建package.json文件
- 使用 npm i eslint --save-dev 命令下载
-
配置package.json
-
"scripts": { "test": "echo \"Error: no test specified\" && exit 1", "lint": "eslint./src", "lint:create": "eslint --init" },
-
-
eslint结合哈士奇使用
-
哈士奇为git仓库设置钩子程序
-
使用
-
在仓库初始化完毕之后,再安装哈士奇
-
在package.json文件中编写配置
-
"husky":{ "hooks":{ // 在git commit之前要通过nom run lint的检查, // 只有当npm run lint 不报错时,commit才能真正的运行 "pre-commit":"npm run lint" } }
-
-
-
-
远程仓库(gitee)
- 创建远程仓库
- 创建本地仓库
- 为远程仓库配置别名&&用户信息
- git remote add 【taobao】【 https://github.com/passToever/Demi.git】
- 推送本地项目到远程仓库
- 推之前如果使用的是https协议,要到windows下清除github相关的凭据
- 之后使用$ git push 【远程仓库别名】【分支名称】命令将本地项目推送到远程仓库
- 克隆远程仓库
- git clone 仓库地址(在本地生成git文件,默认别名为orgin)
- 克隆之后项目自带的git文件要删除
- 查看远程仓库
- git remote
- 设置push的默认推送
- git push --set-upstream origin master:master
- 通过以上设置,设置push默认推送,下次就可以直接使用git push命令将本地仓库推送到远程仓库
- git branch -vv,查看设置的默认推送关系
- git push --set-upstream origin master:master
- git fetch(抓取)
- 拉取远端仓库更新的内容,不会和当前分支合并
- 之后可以创建一个分支指向该分支节点获取直接合并
- git pull(拉取)
- 直接拿到远程仓库更新的内容,并且和当前分支合并
解决冲突
- 先pull远程仓库,经过合并(自己调整之后)add commit 之后再Git push