git

前言

虽然工作了很多年,但对于git的指令总是搞不清,所以以前用了好几年的sourceTree,只要点点点就好了。后来是用的vscode中的源代码管理器,也是点点点就行了。

之前最怕遇到的情况就是,远端有更新(其他人提交了代码),自己也改了代码要提交。正常情况下,需要先pull,再commit+push自己的代码。但sourceTree和vscode太方便了,远端有更新了,会提示你有要拉取的内容,但这玩意有延迟。这时候看到没有提示远端有更新,直接commit+push,然后就会提示你远端有更新了,你要先拉取 。然后拉取的时候,又提示你本地有更改,需要先commit

sourceTree是这样提示的,可能是自己用的有问题,因为自己对git实在说不上多熟😂。拉又拉不下来,提又提不上去,然后就崩了。对这种情况一直非常担心,因为自己不会搞,也搜了一些讲git的文章,看的时候总是感觉,这次终于搞懂了,等又遇到问题,又不会了。

记录一下,以后又不会了,有个地方参考(主要给自己看)。写的不对的轻喷

1. 合并后发现有冲突

此时,没有冲突的文件,add到了暂存区,冲突文件在工作区。

这时候,不想处理冲突了,想取消此次合并,可以使用:

bash 复制代码
git merge --abort

结果:相当于没有合并过

2. 合并后没有冲突

此时,会产生一个提交;提交会重置合并状态。这个时候如果使用git merge --abort,会提示:没有要取消的合并

如果这时候,你发现合错分支了,想要取消合并,可以使用:

bash 复制代码
git reset --soft HEAD~1

结果:会在暂存区看到合并过来的改动

如果使用:

bash 复制代码
git reset --hard HEAD~1

结果:相当于没有合并过

由此可知:reset相当于重置commit,回到commit前;如果想要reset最近的3个commit,那就使用git reset --hard HEAD~3

3. 合并后没有冲突,并且手动push到了远程仓库

此时,发现合并错了,想要取消合并,那就不止要修改本地仓库,还得修改远程仓库,可以使用:

bash 复制代码
git reset --hard HEAD~1
git push -f origin <branch>

git reset --hard HEAD~1,由上可知,reset会重置提交,相当于取消本地仓库的合并,本次仓库和工作区,会回到合并前的状态;这时候,会提示有可更新的内容,毕竟此时本地仓库落后远程仓库。当然,如果已经push好几次了,才发现错了,只要把HEAD~1改成HEAD~<对应的次数>

git push -f origin <branch>强制推送本地仓库,覆盖远程仓库。本地仓库的版本落后远程仓库,只能强制推送。

适用于这个分支,没有其他人提交新内容的情况。

还可以使用:

bash 复制代码
git revert <最新提交> <次新提交> <最旧提交>
git push origin <branch>

git revert会生产一个对应commit反commit,相当于把此次commit的内容,手动改回去,然后再次commit。这样的话,不会影响到其他人提交的改动。
git push origin <branch>不需要强制覆盖。

4. 远端有了新的改动,没有注意到,先进行了commit

一般情况下,远端有了改动,我们需要先pull,把远程仓库的最新代码,同步到本地仓库和工作区。

直接git pull,如果没有冲突的话,会正常pull下来,这时候正常push即可;

如果有冲突,你会发现pull下来后,工作区会出现冲突文件,解决冲突,add+commit+push

这个我怎么感觉在sourceTree上,会提示需要本地先提交还是什么 ,终究还是自己不会用。直接通过指令的话,是可以pull下来的,即使有冲突。

说明

这只是一个个人的记录,自己也不是真的要搞懂git原理是啥,某条指令真实的过程是啥,能解决自己的问题就好。

相关推荐
jstart千语3 小时前
【Git】连接github时的疑难杂症(DNS解析失败)
git·github
工具罗某人3 小时前
TortoiseGit使用图解
git
Zhuai-行淮4 小时前
vscode和git 踩坑
ide·git·vscode
这颗橘子不太甜QAQ5 小时前
Husky使用技巧
javascript·git·代码规范
fanTuanye5 小时前
Git基本使用(很详细)
git·github
李菠菜7 小时前
解决Windows系统下Git克隆时报错“unable to checkout working tree”的方法详解
windows·git
island13147 小时前
【git#4】分支管理 -- 知识补充
大数据·git·elasticsearch
船长@Quant8 小时前
协作开发攻略:Git全面使用指南 — 引言
git·版本控制·源代码管理·协作开发
极小狐9 小时前
极狐GitLab 项目功能和权限解读
运维·git·安全·gitlab·极狐gitlab