上篇文章把平时最最最常常用到的一些命令,然而根本是惯例状况下,接下来讲讲不太失常状况下的命令。
首先,咱们在本地最间接接触的是近程本人仓库,至于近程他人的仓库(大家独特批改文件的仓库,后文简称近程仓库)次要是通过近程本人的仓库进行mr。
那么咱们如何保障本人的仓库外面有他人的批改呢
pull
能够看到近程仓库外面有个others.txt文件,而本地是没有的,为了能让本地和近程仓库同步,就须要用到pull
和push是对应的,个别前面也会跟着近程仓库的地址(上一篇文章中简略地说了下如何设置不同的近程仓库的地址)
mr时conficts
能够发现本地也曾经有了新增的文件。留神,咱们批改的文件也是在近程仓库中的,那如果他人感觉咱们的文件写得不够好而后批改了。
就比方上次提交的helloworld,感觉不行,太简略了,只打印了一次,而后加了个for循环打印了100次,并且在每次打印前面加上序号。
于此同时,咱们也感觉代码也得不够好,须要反复执行1000遍,并且想在输入完后再来一句经典台词,于是乎咱们改了本地的代码。
接着心高彩烈地push了代码,并且提起了Merge Request,也有的平台称为Pull Request,这时候就会发现
有告警此Pull Request无奈主动合并,你应该手动合并它
,其实就是你和其他人同时批改了文件中的对立行,抵触了。之后就得是解决抵触,不同平台的解决抵触的界面应该不同,然而实质都是git。
此时就须要到程序员之间讨(撕)论(b),到底是以谁的为准,这里假如这种,放弃前面的i + 1
然而须要循环1000次。所以就须要批改为
其实这个文件的代码原则上你删了都没关系,因为git曾经跟你说这个文件有抵触了,至于如何抉择,须要保留什么,git感觉咱们会解决好的。当实现这所有之后就和之前的mr是统一的,审核通过就能够合入了
然而在mr的时候再去解决抵触,总感觉有点麻烦,所以个别工作中罕用的做法就是在commit之后,先pull一下最新代码
pull时conflicts
能够看到近程的仓库此时是这样滴
而后近程对文件进行了批改,模仿其余共事合入了新代码
同样在不晓得的状况下,咱们想要增加一个getStr的办法,并且在main函数外面调用
编辑完后失常add,commit,然而不要push,先pull一下近程仓库的代码
在最初能够看到一个这样的信息,就是让咱们解决抵触
Auto-merging hello.javaCONFLICT (content): Merge conflict in hello.javaAutomatic merge failed; fix conflicts and then commit the result.
如何解决呢,就是编辑抵触的文件即可,用vim来看下抵触的文件此时长啥样
只须要把<<<<<<<
,=======
和>>>>>>>
还有HEAD这些非咱们想要的字符删掉,而后保留须要的代码,最初就失常add commit push mr即可。
这时候必定会有刚学的小伙伴就问了,那如果改的期间别的人又往仓库中合入了代码咋办呢
开玩笑开玩笑,然而这种状况99.99%只会存在在实践中,事实工作中根本不会呈现,如果凑巧碰到了那就再解决抵触呗。
stash
- 咱们批改了多个文件比方批改了ABCDEF...Z这26个文件
- 主管就过去说有个模块十分急,须要先合入ABCD这4个文件
- 近程仓库曾经有人合入了LX这两个文件
- 而后记得养成良好的习惯,commit后pull一下近程代码库
总结就是不想提交所有批改的文件,且批改的文件中有抵触的状况下
意思就是,本地有些文件可能在合入的时候被覆写,此时有两种抉择
- commit,而后解决抵触
- stash,而后pull下来,之后stash pop的时候如果有抵触,解决抵触
stash就是把本地的所批改的先放在一个git的“堆栈”中,本地对近程就是未修改的状态,而后就能失常的pull
应用git stash save [save message]
来暂存扭转之后,可能胜利的pull下来,接下来看下git的状态
既然能保留,那必定能取出来,下面也说过,如果你save的文件和近程仓库批改的文件一样,那么pop进去的时候必定会有抵触
解决方案同样是解决抵触,这里就不再赘述了
reset
第一篇文章中有说到依据status中的提醒,add和commit都能够回撤,那push后必定也有对应的操作。
能够看到至多有两个文件是在本次的push中进行的,要想撤回push,首先得晓得push了啥,都有哪些push
通过git log来查看,然而git log有很多骚操作(就是丑化),最罕用的就是以下几种
啥都不加,输入全副且简短
输入前几个,
git log -p
单行输入,
git log --oneline
当然是能够组合的,
git log --oneline -2
天然就是单行输入前2条记录。
不难看到,每次的提交主题都是一串数字(版本号)和commit时候的音讯,当咱们想回退到其余版本的时候,就能够git reset [版本号]
即可。我晓得网上对于reset也有很多骚操作,回退前多少次啥的,然而都不如查看版本号回退来得好使,非要用的时候查一下就好了。
退出我要回退到上个版本,只须要这样做
能够看到本来push的两个文件当初曾经变成了待提交的状态。
创作不易,如果对你有帮忙,欢送点赞,珍藏和分享啦!
上面是集体公众号,有趣味的能够关注一下,说不定就是你的宝藏公众号哦!!!