1. 查看git配置选项
# 查看所有配置
git config -l
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
2. 设置全局配置
配置你的姓名和邮箱,以后每次git提交都会使用改信息
git config --global user.name "liujiashun" #名称
git config --global user.email 1248895427@qq.com #邮箱
3. git分区:三个本地区和一个远程区
- workspace::工作区,平时存放代码的地方
- index/stage::暂存区,用于临时存放你的改动,本质是一个文件,保存即将提交到文件列表的信息
- Repository:本地仓库,包含所有你提交的版本的数据,其中HEAD指向最新放入仓库的版本
- remote:远程仓库
4. git本地区详解
- Directory:git管理的要给目录,即仓库。包含我们的工作空间和git的管理空间
- Workspace:工作空间
- .git:存放git管理信息的目录,初始化仓库的时候自动创建(隐藏文件夹)
- index/Stage:暂存区
- Local Repo:本地仓库
- Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态
5. git工作流程
- 在工作目录中添加、修改文件
- 将需要进行版本管理的文件放入暂存区
- 将暂存区的文件提交到git仓库
6. git中文件的四种状态
- Untracked:未跟踪,没有加入到git本地库,不参与版本控制,通过git add可变为Staged状态
- Unmodify:未修改,文件已加入本地库。如果对该文件修改,则会变为Modified状态,如果使用git rm将其移出版本库,则会变为Untracked状态
- Modified:已经修改。如果调用了git add则变为暂存staged状态,如果调用git checkout则丢弃修改回到Unmodfity状态(git checkout 表示从库中取出文件覆盖当前修改)
- Staged:暂存状态,执行git commit 会将修改入库,变为Unmodify状态,执行git reset HEAD filename取消暂存,文件又变为Modified状态
7. git版本控制
1. 状态查看
# 查看工作空间中的所有文件状态
git status
# 查看工作空间中指定文件的状态
git status a.txt
2. 查看历史版本
# 查看当前版本和当前版本之前的历史版本
git log
# 简写形式
git log --oneline
# 查看所有版本信息,推荐使用这个
git reflog
3. 版本回退(重置)
# 重置到指定版本(可以向前也可以向后)
# 81cb5f2为版本标签,通过git reflog查看
# 基于索引
git reset --hard 81cb5f2
# 使用^符号,只能后退,一个^符号后退一个版本
# 后退两个版本
git reset --hard HEAD^^
# 使用~符号,也是只能后退
# 后退3个版本
git reset --hard HEAD~3
参数说明:
- --soft:仅仅将本地库移动HEAD指针。(即不改变工作区和暂存区)
- --mixed:在本地库移动HEAD指针,同时重置暂存区。但不改变工作区
- --hard:在本地库移动HEAD指针,同时重置暂存区和工作区。
4. 比较差异
# 比较工作区中与暂存区中的文件差异
git diff
# 比较指定文件
git diff a.txt
# 比较工作区与本地库中的文件差异
git diff HEAD a.txt
8. 分支管理
1. 创建分支
# 创建本地分支dev
git branch dev
2. 查看分支
# 查看分支
git branch -v
3. 切换分支
# 切换到dev分支
git checkout dev
4. 合并分支
# 如果当前分支在master分支,则表示将指定分支dev合并到当前分支master
git merge dev
5. 其他分支操作
#本地新建分支并切换到该分支
git checkout -b [brancd-name]
# 删除分支
git branch -d [branch-name]
# 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
9 远程分支管理
1. origin在.git的配置文件中有说明,默认表示远程主机别名
2. 克隆项目
# 先从远程仓库克隆到本地
git clone https://gitee.com/liu_jiashun/demo1.git
3. 设置远程分支地址
# 设置远程分支地址别名,如果是克隆的则不需要设置
git remote add origin https://gitee.com/liu_jiashun/mybatisplus-demo.git
# 查看当前所有远程地址别名
git remote -v
4. 拉取远程分支
# 新建本地分支并拉去指定远程分支
# git checkout -b [本地分支名] origin/[远程分支名]
git checkout -b dev origin/dev
# 拉取指定远程分支到指定本地分支
# git fetch <远程主机名> <远程分支名>:<本地分支名> # 不会自动merge
# git merge <远程主机名>/<远程分支名> # 上一步是fetch,这一步是merge
# git pull <远程主机名> <远程分支名>:<本地分支名> # 上面两步的合并
git pull origin dev #同名可以省略
git pull origin master --allow-unrelated-histories #允许不相关历史提交,强制合并
5. 推送到远程分支
# 将本地分支推送到指定远程分支上去: 如果本地分支名与远程分支名相同可以省略冒号后面的内容
git push <远程主机名> <本地分支名>:<远程分支名>
git push origin dev
6. 删除远程分支
# 删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
10. git常用命令
#将一个文件夹初始化为git目录
git init
#添加所有文件到暂存区
git add .
#添加指定文件到暂存区
git add [filename]
#将暂存区中的文件取消,回到未追踪或者已修改状态
git restore --staged [filename]
#回退当前目录下所有修改,如果加入到暂存区之后又有修改,则回退到暂存区的文件内容,如果没加入暂存区,回退到版本库中的状态
git checkout .
#回退指定文件
git checkout <file>
#将暂存区中的内容提交到本地仓库 -m 提交信息
git commit -m "消息内容"
11. 忽略文件
- 在主目录下创建 .gitignore 文件
# 忽略所有以.txt结尾的文件
*.txt
# 不忽略lib.txt
!lib.txt
# 忽略target目录,不管target在哪一个目录下
target
# 忽略file目录下的所有文件,不管file在哪个目录下
file/
# 忽略根目录下file目录下的文件
/file/
# 忽略指定目录下的所有文件
log/*
# 忽略css目录下的.css文件
css/*.css
12. 设置本机绑定SSH公钥,实现免密登录
# 进入 C:\Users\Administrator\.ssh 目录
# 生成公钥
ssh-keygen
# 会在此目录下生成公私钥
# 将公钥信息添加到码元账户中