Git命令操作
Git命令操作
git命令,是完全兼容Linux命令行的,所以Linux的命令行在git也可以运行
本地库初始化
-
命令:
git init
-
效果:在文件夹中,会被创建出一个.git的一个隐藏文件,这时,本地库已经初始化完成
- 注意:.git目录是存放本地库相关的配置文件,不要删除,也不要胡乱修改
设置签名
设置签名,也就是设置本地库的使用者,只是用于区分在上传到github项目托管的时候的上传者
-
形式:
用户名:yuli
邮箱:[email protected]
-
作用:用于区分不同的开发人员
-
辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关联
-
命令:
-
项目级别/仓库级别:仅在当前本库范围内生效
-
git config user.name '仓库级别用户名'
-
git config user.email '仓库级别邮箱@email.com'
-
-
系统级别,当前操作系统的用户范围
git config ==--global== user.name '系统级别用户名'
git config ==--global== user.email '系统级别邮箱@email.com'
- 信息保存位置(~/.gitconfig):
- ==~==是系统用户文件夹所在的位置
- ==~==是系统用户文件夹所在的位置
-
级别优先级
- 就近原则:项目级别优先于系统用户级别,二者都有时采用项目级别 的签名
- 如果只有系统用户级别的签名,就以系统用户级别的签名为准
- 二者都没有不允许
-
添加、提交以及查看状态
命令 | 范例 | 作用 |
---|---|---|
status | git status |
查看工作区缓存区的状态 |
add | git add [filename] |
将工作区的“新建/修改”添加到暂缓区 |
commit | git commit -m ‘这里写备注信息’ |
将暂缓区的内容提交到本地库 |
查看版本历史记录
log命令
命令:log
使用格式:git log --[选项]
说明:如果使用默认log(即没有选项)的时候,会默认使用less打印出所有的历史版本的详细信息
示例:
log选项
-n(自定义显示数量)
选项:-n
作用:只显示历史n个版本(默认为指针指向的位置之前的n个版本)
使用格式:git log -2
示例:
–pretty=oneline(显示格式)
选项:–pretty=oneline
作用:使每个历史版本只显示该版本的hash值以及他的版本备注
使用格式:git log --pretty=oneline
示例:
–oneline
选项:–oneline
作用:使每个版本只显示该版本的简化后的hash值以及他的备注
使用格式:git log --oneline
示例:
reflog命令
命令:reflog
作用:显示每个历史版本的简化后的hash值,和[email protected]{n}以及备注
使用格式:git reflog
说明:[email protected]{n}的意思为[email protected]{移动到当前版本需要多少步}
示例:
操作版本的前进后退
本质:
操作版本的前进后退本质其实就是操作指针的前进后退
例如这个图,他现在的指针(HEAD)正在指向[email protected]{0},所以,我们认为现在的版本为b1c3d95这个版本
如果我们想要版本后退,就将指针往后移动,即可回退版本。想要版本前进就往前移动。
reset命令
命令:reset
作用:操作版本指针
使用格式 git reset -[选项]
使用方法如下:
基于索引值操作版本(推荐)
优点:可以前进后退到到任何版本
-
git reset --hard [局部索引值]
-
git reset --hard 2e299b6
使用^符号(不推荐)
缺点:只能后退版本
git reset --hard^
- 注:一个^表示回退一个版本,n个^表示回退n个版本
使用~符号(不推荐)
缺点:只能后退版本
git reset --hard~n
- 表示回退n步
reset命令的三个选项对比
–soft
- 仅在本地库中移动HEAD指针
–mixed
- 在本地库中移动HEAD指针
- 重置暂存区
hard参数
- 在本地库中移动HEAD指针
- 重置暂存区
- 重置工作区
删除文件并找回
- 前提:删除前,文件存在时的状态提交到了本地库。
- 操作:
gitreset--hard[指针位置]
- 删除操作已经提交到本地库:指针位置指向历史记录
- 删除操作尚未提交到本地库:指针位置使用 HEAD
比较文件差异
命令:diff
作用:比较本地库的这个文件与暂存区或者历史的版本的这个文件中的差异
使用格式:git diff [文件名]
范例(该范例为比较本地库与暂存区的差异)
- gitdiff[文件名]
- 将工作区中的文件和暂存区进行比较
- gitdiff[本地库中历史版本][文件名]
- 将工作区中的文件和本地库历史记录比较
- 不带文件名比较多个文件
分支管理
什么是分支
在版本控制过程中,使用多条线同时推进多个任务。
分支的好处
同时并行去推进多个功能的开发,提高开发的效率,
各个分支在开发的过程中,如果某个分支开发失败,不会对其他分支有任何影响。
分支操作
注意:在分支操作中,全部都是以现在所处的分支开始操作
创建分支
命令:gitbranch
作用:创建分支
使用格式:git branch [分支名]
查看分支
命令:branch
选项:-v
作用:查看分支
使用格式:git branch -v
切换分支
命令:chekout
作用:切换分支
使用格式:git chekout [分支名]
合并分支
命令:merge
作用:合并分支
使用格式:git merge [有新内容的分支名]
- 利用
git checkout [被合并分支名]
,切换到接受修改的分支(被合并,增加新内容)上 - 执行 merge 命令
解决冲突
冲突的表现
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VWjSOzp6-1589297681902)(C:\Users\13537\AppData\Roaming\Typora\typora-user-images\image-20200512233050419.png)]
冲突的解决
- 第一步:编辑文件,删除特殊符号
- 第二步:把文件修改到满意的程度,保存退出
- 第三步:gitadd[文件名]
- 第四步:gitcommit-m"日志信息"
- 注意:此时 commit 一定不能带具体文件名
看了尚硅谷的git教学视频,特意来写写笔记,加深记忆,里面的老师讲得很好,如果有需要的人也可以去看看视频