Git的三种状态
分为三个区(工作区,暂存区,存储区)
1.Untracked files (工作区)新建文件,未被git管理()
2.modified (工作区)已修改,未将修改的结果放到暂存区
2.stageed(暂存区)已暂存,对已修改的文件进行了标记,保存在待递交的列表中
3.committed(存储区)已递交到本地的git仓库中
Git工作流程
1.在工作区修改文件
2.文件Add进暂存区
3.递交更新commit,存储到git仓库
查看Git版本
git --version
返回:git version 2.29.2.windows.2
设置用户信息
解释:git全局配置 用户名
git config --global user.name "用户名"
解释:git全局配置 邮箱地址
git config --global user.email "你的邮箱地址"只需要配置一次就行
设置好的用户信息存储目录:C:\Users\m1560\.gitconfig
git config --global user.name "用户名"
git config --global user.email "你的邮箱地址"
查看git全局配置信息
git config --list --global 查看全局配置信息
git config user.name 查看用户名
git config user.email 查看email
git config --list --global
user.name=dazhi
user.email=2973901695@qq.com
git config user.name
git config user.email
获取帮助信息
git config -h
获取仓库的两种方式
1.将本地目录设置成git仓库
2.从远程服务器克隆一个git仓库
将现有目录初始化为Git仓库
1.进入项目目录,鼠标右键,打开 git bash
2.然后执行git init(会创建一个.git的隐藏目录,此目录就是当前项目的git仓库,不能删掉)
git init
把本地文件放到暂存区
3.1 git add . 会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤
3.2 git add * 会忽略.gitignore把任何文件都加入
//向暂存区添加单个文件
git add a.txt
//向暂存区添加多个文件(根据忽略过滤)
git add .
//向暂存区添加多个文件(任何文件)
git add *
查看文件状态
1.Untracked files 新建的文件,未被跟踪状态(红色状态,需要执行git add .)
2.Changes not staged for commit(工作区改变了,未被递交到暂存区,红色状态,需要执行git add .)
2.Changes to be committed 被跟踪处于暂存状态(处于暂存区,未被递交到仓库,绿色状态,需要执行 git commit -m 'xxxx')
git status
//精简模式
git status -s
从暂存区递交到本地仓库
1.-m后面是备注
2.-a -m 直接将工作区的代码,递交到git仓库(跳过git add)
git commit -m '提交黑马面面网站'
//跳过使用暂存区,直接递交到仓库
git commit -a -m 'zzzzdddqqqcc'
将本地仓库的文件恢复到工作区文件
1.git checkout --
2.操作不可逆,危险操作
git checkout -- a.txt
连接远程仓库(关联本地与远程)
1.访问方式一:https,零配置,每次访问都需要输入账号/密码
2.访问方式二:SSH,配置公钥,每次访问不需要重复输入账号密码
3. 本地有仓库:直接git remote
4.本地无仓库:git init 等一系列操作
//添加远程仓库地址
git remote add origin 你新建的仓库地址
//https模式
例如: git remote add origin https://gitee.com/ZhiMaKes/uniappS
//ssh模式
例如: git remote set-url origin git@gitee.com:ZhiMaKes/uniapp2.git
查看远程仓库
git remote -v
拉取远程仓库
git pull origin master
git pull origin master --allow-unrelated-histories
把本地仓库的文件推送到远程仓库 push
git push -u origin master
从暂存区移除文件
1.git reset HEAD
2.原来啥状态,还原成递交前的状态。(比如绿M到红M)
//从暂存区移除单个文件
git reset HEAD a.txt
//从暂存区移除全部文件
git reset HEAD .
跳过使用暂存区,直接递交到仓库
1.直接将工作区的代码,递交到git仓库(跳过git add)
git commit -a -m 'zzzzdddqqqcc'
本地移除文件
1.从工作区和仓库一起移除
2.只从工作区移除
//从仓库和工作区同时移除
git rm -f index.js
//只从工作区移除
git rm -r --cached index.css
忽略文件
1.空格不匹配任意文件,可作为分隔符,可用反斜杠转义
2.#开头的文件标识注释,可以使用反斜杠进行转义
3.! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 4.也不会再次被包含。可以使用反斜杠进行转义
5./ 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
6./ 开始的模式匹配项目跟目录
7.如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录
8.** 匹配多级目录,可在开始,中间,结束
9.? 通用匹配单个字符
10.[abc] 通用匹配单个字符列表
查看本地库提交历史
1.最下面小点,按回车,可以一致看所有历史
git log
本地回退到指定版本
//在一行上显示所有递交历史
git log --pretty=oneline
ef9fa852857426cbc0e4230350966ebebf87a985 (HEAD -> 1) zz
85d4ec13a0b2eaf37673c7091de1ea63a5ba3561 wwww
12a42360e5ef4cd960812ba5e793c3da6a3c02a1 wwww
6d130c51d764529b0b6107e7df18ecb5d13d6007 asdasd
2c7113b5467204c40e5c8893350990e2cbd390e3 zzzz
c26c2c755c4c5f800b2fbd145223819d88b7e16c zzzzzz
cda853c38a36083542279901fe610c0ee61450ed init project2
91a9097bfaec95bf9bcb3437691e7b3825f21a2a init project2
5ec4561220af5ebdd25442904be20a110d44c4ab init project2
b7f1305d542b825ffd5ccb1772e237da80482c8d (branch2) init project2
ad3f49139eda1de6fcdb02da957ba452bec173d8 init project
//回退到指定版本
git reset --hard ID
例如:git reset --hard ad3f49139eda1de6fcdb02da957ba452bec173d8
//在旧版本中查看所有的操作历史(不只是递交,包括删除,还原等)
git reflog --pretty=oneline
本地生成公钥
//生成公钥
ssh-keygen -t rsa -C "your_email@youremail.com"
//查看公钥
cat ~/.ssh/id_rsa.pub
//查询公钥是否配置成功
ssh -T git@gitee.com
远程克隆代码到本地
git clone git@gitee.com:ZhiMaKes/uniapp.git
本地查看所有分支
git branch
//当前所处分支
* master
本地创建新的分支
1.git branch + 名称
2.新分支的代码和主分支的代码完全一样
git branch login
本地切换分支
1.切换分支后工作区的代码也跟着改变
2.git checkout +分支名
git checkout one
返回:Switched to branch 'login'
//当使用git checkout 切换分支时会提示you need to resolve your current index first
执行
git reset --merge
本地快速创建并切换到新分支
1.git checkout -b 分支名
2.是创建和切换的合并写法
git checkout -b two
返回:Switched to a new branch 'two'
合并本地分支
1.在主分支上进行合并操作,将分支上的代码合并到主分支上
2.合并到主分支上后,子分支上的代码还是保持原来的样子
//切换到主分支
git checkout master
//合并分支
git merge two
删除本地分支
1.git branch -d +分支名称
git branch -d one
解决冲突
//1.主分支上手动进入冲突文件,然后进行修改
//2.修改完成后,再主分支上进行递交
git commit -a -m '解决了冲突'
将本地分支推送到远程分支
1.git push -u 远程仓库别名 本地分支名称:远程分支名称(第一次)
1.git push 远程仓库别名 本地分支名称:远程分支名称(以后)
//(第一次)git push -u 远程仓库别名(默认都为origin) 本地分支名称:远程分支名称
git push -u origin two:two
//(第一次)本地和远程分支名称一致时,可以省略为
git push -u origin two
//(以后执行)
git push 远程仓库别名 本地分支名称
git push origin two:two
查看远程分支的列表
1.git remote show +远程仓库名称
git remote show origin
* remote origin
Fetch URL: git@gitee.com:ZhiMaKes/uniapp2.git
Push URL: git@gitee.com:ZhiMaKes/uniapp2.git
HEAD branch: master
Remote branches:
master tracked
two tracked
Local branches configured for 'git pull':
master merges with remote master
two merges with remote two
Local refs configured for 'git push':
master pushes to master (fast-forwardable)
two pushes to two (up to date)
把远程分支同步到本地
1.git checkout +远程分支名称
git checkout two
拉取远程当前分支最新代码
fetch(获取)
pull(拉取)=获取+合并
拆解git pull 操作
git pull操作其实是git fetch 与 git merge 两个命令的集合。
git pull 等效于先执行 git fetch origin 当前分支名, 再执行 git merge FETCH_HEAD.
git pull
删除远程分支
1.git push origin --delete + 分支名
git push origin --delete two
工作流程
1.创建本地分支tabbar,写代码
2.将tabbar本地分支库递交到远程库tabbar(远程存储)
3.将tabbar分支代码递交到master主分支(合并本地分支)
4.将本地tabbar分支库删掉(删除本地冗余)
前端忽略文件
1..gitignore
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*