后悔药:

  1. 撤销git add内容:git reset HEAD
  2. 撤销git commit内容:git reset --soft HEAD^
  3. 删除新增的文件:git clean -dfx(-d:删除未被添加到git路径中的文件,-f:强制执行,-x:删除忽略文件)
  4. 回滚全部的修改:git restore .
  5. 撤销git push :git reset --hard HEAD^
  6. 得到历史记录:git reflog;回滚至历史记录中的某一版本:git reset --hard HEAD@{n}在这里插入图片描述

一、查看状态

git status

二、显示日志:

git log  # 只显示当前版本和当前版本之前的版本。之后的版本不显示
git log --pretty=oneline
git log --oneline #这个输出的日志更精简,索引值也是缩短版
git reflog #这个输出的日志更精简,索引值也是缩短版

在这里插入图片描述

三、回退、前进版本,三种方式

reset

1. 基于索引值操作(最好的方式)
git reset --hard 索引值
2. 使用^符号,只能后退
git reset --hard HEAD^  #后退一步
git reset --hard HEAD^^  #后退二步
git reset --hard HEAD^^^^^  #后退五步
#一个^表示后退一步,n个^表示后退n步
3. 使用~符号,只能后退
git reset --hard HEAD~n
#后退n步
4. reset三种参数对比
  • –soft

    • 仅仅在本地库移动HEAD指针
    • 在这里插入图片描述
  • –mixed

    • 在本地库移动HEAD指针
    • 重置暂存区
    • 在这里插入图片描述
  • –hard

    • 在本地库移动HEAD指针
    • 重置暂存区
    • 重置工作区

四、找回删除文件

# 只要commit后,就会放入本地库进行记录版本。除非你删掉了本地库。否则一定会保存原来的记录

# 找回删除文件
# 前提:删除前,文件存在时的状态提交到了本地库
# 操作:git reset --head [指针位置]
	# 删除操作已经提交到了本地库:指针位置指向历史记录
	# 删除操作尚未提交到本地库,仅仅只是add了,并没有commit时:指针位置使用HEAD

五、比较文件差异

git diff [文件名] # 当前工作区的文件和暂存区的比较
git diff HEAD [文件名] #当前工作区的文件和当前本地库的版本比较
git diff HEAD^ [文件名] # 和上一个版本比较

分支管理

一、什么是分支?

合并分支,相当于是升级版本,添加新功能

hot_fix:热修复,分支,线上的项目是24小时不停。
在这里插入图片描述

二、分支的好处?

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

三、分支操作

1. 查看、创建、切换分支
git branch -v #查看所有分支
git branch hot_fix #创建一个分支
git checkout hot_fix #切换分支
2. 合并分支
  • 第一步:切换到接受修改的分支上(被合并,增加新内容的分支)
  • 第二步:执行merge命令
git checkout master #切换分支
git branch -v #查看分支
git merge hot-fix #合并分支(hot-fix被合并到master)
3. 解决冲突

产生冲突原因:两个分支恰好改了同一个文件的同一个位置(同一个文件的同一行)。

此时合并两个文件,此时分支的状态变为正在合并。

在这里插入图片描述

打开这个冲突文件会发现如下情况。(此时需要沟通,然后编辑文件删除特殊符号)

在这里插入图片描述

解决冲突的步骤:

  • 第一步:编辑文件,删除特殊符号
  • 第二部:把文件修改到满意的程度,保存退出
  • 第三步:执行下列命令
git status #查看分支状态,得到当前状态解决方法

git add 冲突文件

git commit -m "resolve conflict"  #commit后面不能跟具体文件名,这样会报错

GIT基本原理

git remote add origin https地址 #把https的地址存在本地里面,取个别名origin
git remote -v #查看当前的别名

git push origin master #推送到origin上的master分支

pull = fetch+merge

fetch:读操作,抓取。只是下载下来,并没有覆盖

git checkout origin/master:切换分支为https下的master分支。

拉取:

  • pull = fetch + merge
  • git fetch [远程库地址别名]【远程分支名】
  • git merge [远程库地址别名/远程分支名]
  • git pull [远程库地址别名]【远程分支名】
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐