git安装
直接到官网下载后,安装到window机子上。
敲命令,说明安装成功
C:\Users\Administrator>git --version
此外在桌面右键可以看到
点击Git Bash Here可以打开命令窗口
配置信息
- 设置用户名和邮箱
# 全局配置
git config --global user.name eastqi
git config --global user.email 66734643@qq.com
# 本地配置(每个项目自己的配置)
git config --local user.name eastqi
git config --local user.email 66734643@qq.com
- 查看全部配置
git config --list
3. 查看本地配置
git config --list --local
需要在git管理的项目中执行,否则会报错;
git管理的项目中执行时:
非git管理的项目目录下执行时:
- 查看全局配置
git config --list --global
5. 查看系统配置
git config --list --system
创建版本库
比如已有项目D:\studyGit\myGitProject
在该目录下执行git init
,会生成一个.git的文件夹
或没有项目在D:\studyGit下执行git init myGitProject
git init
git init myGitProject
基本命令
# 在工作区创建文件
touch index.html
# 添加到暂存区
git add index.html
# 修改文件
echo 'hello world' >> index.html
# 查看文件状态
git status
# 查看日志
git log
# 从暂存区提交文件到版本库
git commit -m 'add index.html'
# 查看工作区和暂存区的区别
git diff
git diff [文件名]
# 查看暂存区和版本库的区别
git diff --cached
# 查看工作区和版本库的区别
git diff HEAD
# 查看日志前N条
git log -n 2
# 在一行展示日志
git log --pretty=oneline
# 更详细的日志
git log --pretty=raw
# 创建分支
git checkout -b b1 fdd2576f079618e2606f0fa9081df3cdd8069281
对分支进行版本修改并提交一次
# 图形化展示 --all查看所有分支 --graph图形化
git log --graph --all
# 切换分支
git checkout master
# -p会展示差异信息
git log -p -n 2
# 查看两个提交的区别
git diff e25e6f9a fdd2576f
git diff e25e6f9a fdd2576f -- [文件名]
# 日志具体状态统计信息
git log --stat
# 查看分支信息
git branch -av
gitk 图形化界面
# 在项目目录下敲
gitk --all
弹出图形化界面
分支
快进合并
# 查看分支
git branch
# 创建分支
git branch branchname
git checkout -b branchname
# 切换分支
git checkout branchname
# 删除分支
git branch -D branchname
# 快进合并 目标b1分支比master分支版本更高
# 切换到master分支
git checkout master
git merge b1
3路合并
# 3路合并,结构如下图所示
# 图表形式查看当前分支情况
git log --all --graph --pretty=oneline
# 合并
git merge b3
# 撤销合并
git merge --abort
# 合并的处理,上图可以看出冲突的地方是index.html
# 如下图,在文本编辑器中解决冲突后提交
# 冲突处理后添加到暂存区
git add index.html
# 再提交版本库
git commit -m 'merge index.html'
# 查看最终分支情况
git log --all --graph --pretty=oneline
rebase 变基
# 先构造如下分支情况 master 和 b4
git log --all --graph --pretty=oneline
# 将当前分支的基础切到master,即变基
git rebase master
# 撤销变基操作
git rebase --abort
# 解决冲突后添加到暂存区,注意变基操作不需要执行commit
git add .
# 然后继续变基
git rebase --continue
# 后面可以按照快进合并或者3路合并方式进行合并
需要特别注意的是 快进合并会直接将高版本的覆盖低版本的文件
分离头指针
其实就是相当于先创建分支,但是没有给分支设置头指针,导致在其他分支中是看不到该提交的一种操作。
- checkout[7508bfc65a088f8f6e05536b88de6d1178df29fb]的commit
- 在该commit上新增文件并提交
3. 查看分支结构
- 切换到master分支,是看不到上面的分支信息的
- 如果给该分支分配一个头指针,则就可以看到
git branch detach 84373ee
进阶命令
- 修改当前最新提交的备注信息
# 执行后会打开一个编辑窗口 输入i,进行编辑后ESC,shift+:,wq
git commit amend
- 修改以前的commit备注
- 合并多个commit到一个
- 恢复暂存区与版本库一样
git reset HEAD [文件名]
5. 恢复工作区与暂存区一样
git checkout 文件名
6. git stash 临时任务保存堆栈
# 保存
git stash
git stash save "message"
# 查看
git stash list
git stash show [stash@{$num}]
# 获取一个但不删除
git stash apply [stash@{$num}]
# 弹出一个并删除
git stash pop [stash@{$num}]
# 删除
git stash drop stash@{$num}
# 清除所有
git stash clear
- 文件的忽略,不加入git管理的设置
# 新建忽略文件
touch .gitignore
# 配置忽略文件
echo '*.html' > .gitignore