命令行操作
本地库初始化
git init 初始化一个git仓库
创建了一个.git目录
注意:.git目录中存放的是本地库相关的子目录和文件
设置签名
形式:
用户名:xgt
Email地址:XXXXXX@163.com
作用:Email地址不必是真实存在,作用是区分不同开发人员得身份,和github或gitee一点儿关系没有。
签名级别
项目级别(仓库级别):仅在当前本地库范围内有效
命令:git config user.name xgt_pro
git config user.email xgt_pro@163.com
信息保存位置:当前项目目录下.git/config
系统用户级别:登录当前操作系统的有用户范围
命令:git config --global user.name xgt_pro
git config --global xgt_pro@163.com
签名优先级:就近原则,项目级别优先于系统用户级别
注意:两个级别签名都没有是不允许的
项目级别的签名以及信息保存位置
系统级别的签名以及信息保存的位置
查看状态
tig status
在master分支(主分支)
没有提交过(本地库)
没有可提交的文件(暂存区)
创建一个文件,good.txt 写点儿东西 然后再执行git status
提示虽然没有提交,但是又没有追踪的文件(红色文件),可以使用git add追踪文件
追踪文件,放入暂存区
警告:就是行末的换行符会被转换,安装的时候选择模式windows或者Unix,没啥影响,不用在意
再查看状态git status(提交到了暂存区)
提示git rm --cached good.txt把文件从暂存区删除
git commit good.txt 把暂存区文件提交到本地库
提示需要输入提交信息:类似注释,做了什么改动(再vim编辑器里面),安装的时候选择过使用vim编辑器
再次查看状态:没有可提交,暂存区没有文件
修改以下文件vim good.txt
然后查看状态 git status
检测到没有放到暂存区的修改
再次提交到暂存区
提交并且使用-m直接写“注释”
git commit -m "My second commit->modify good.txt" good.txt
实现版本的前进后退
git log查看提交日志和历史版本
再提交一次,然后git log
注意:多屏显示控制方式
space:向下翻页
b:向上翻页
q:退出
->head指向当前版本
git log --pretty=oneline或者git log --oneline 一行显示一条记录的形式显示日志和历史版本
git reflog 会显示当前版本以及回退到某一版本需要移动的步数
基于索引值操作(推荐)
git reset --hard c2a1dd9根据索引,回退/前进到某一指定版本
只能后退版本
git reset --hard HEAD^ 退一个版本
git reset --hard HEAD^^ 退两个版本
以此类推
git reset --hard HEAD~3 后退三个版本
git reset --hard HEAD~10 后退10胡歌版本
注意:只能后退版本
hard|soft|mixed
git help reset
--soft 仅仅再本地库移动HEAD指针
--mixed 再本地库移动HEAD指针,重置缓存区
--hard 在本地库移动HEAD指针,重置暂存区,重置工作区
永久删除文件后找回
1.创建文件并且提交
2.删除文件
3.提交删除
4.回退版本->文件找回
添加到暂存区的删除文件找回
git reset --hard HEAD 统一当前版本->找回文件
前提:删除前,文件存在的状态提交到了本地库
操作:git reset --hard[指针]
比较文件
git diff b.txt 将工作区中的文件和暂存区进行比较
git diff [历史版本] [b.txt] 将工作区中的文件和本地库历史记录比较
如果不带文件名,就是和多个文件进行比较
分支管理
git branch -v 查看所有的分支
git branch hot_fix 创建一个分支
git checkout hot_fix 切换分支
合并分支
1.切换到接受修改的分支上
2.执行git merge got_fix
分支合并冲突的表现:
多分支修改同一文件的同行,修改成不同的内容:自动合并失败
解决分支合并的冲突:
手动修改,git add 标记已解决
但是还是处于正在合并状态
使用git commit完成合并->不能带文件名