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原理是啥,某条指令真实的过程是啥,能解决自己的问题就好。

相关推荐
小毛驴8509 小时前
所有微服务部署都使用一个git地址,并且通过docker部署各个服务的情况下,如何编写mvn指令来处理各个服务。
git·docker·微服务
国王不在家10 小时前
git 切换仓库后清理分支缓存
git
柯南二号13 小时前
【Gitlab】Ubuntu 20.04服务器部署Gitlab
git·gitlab
phac12314 小时前
git 如何直接拉去远程仓库的内容且忽略本地与远端不一致的commit
大数据·git·elasticsearch
ficker131 天前
git常用命令
git
kevin_cat1 天前
微信群机器人-备份文件发送通知
git·bash·企业微信
程序媛Dev1 天前
50.4k Star!我用这个神器,在五分钟内搭建了一个私有 Git 服务器!
运维·服务器·git
澈轩2 天前
Git 用得好,下班走得早
git
人间造梦工厂2 天前
Git Bash 别名
git
画个太阳作晴天2 天前
解决 Android Studio 中 build 目录已被 Git 跟踪后的忽略问题
git