【协同开发】【后悔药】git回滚、分支操作、解决冲突
一、查看状态git status二、显示日志:git log# 只显示当前版本和当前版本之前的版本。之后的版本不显示git log --pretty=onelinegit log --oneline #这个输出的日志更精简,索引值也是缩短版git reflog #这个输出的日志更精简,索引值也是缩短版三、回退、前进版本,三种方式reset1. 基于索引值操作(最好的方式)git reset --h
·
文章目录
后悔药:
- 撤销git add内容:git reset HEAD
- 撤销git commit内容:git reset --soft HEAD^
- 删除新增的文件:git clean -dfx(-d:删除未被添加到git路径中的文件,-f:强制执行,-x:删除忽略文件)
- 回滚全部的修改:git restore .
- 撤销git push :git reset --hard HEAD^
- 得到历史记录: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 [远程库地址别名]【远程分支名】
更多推荐
已为社区贡献1条内容
所有评论(0)