淦榔组,沖突的時(shí)候熙尉,同事非得說(shuō)他才是對(duì)的怎么辦

上篇文章把平常最最最經(jīng)常用到的一些命令,但是基本是常規(guī)情況下瓷患,接下來(lái)講講不太正常情況下的命令骡尽。

首先,我們?cè)诒镜刈钪苯咏佑|的是遠(yuǎn)程自己倉(cāng)庫(kù)擅编,至于遠(yuǎn)程別人的倉(cāng)庫(kù)(大家共同修改文件的倉(cāng)庫(kù),后文簡(jiǎn)稱遠(yuǎn)程倉(cāng)庫(kù))主要是通過(guò)遠(yuǎn)程自己的倉(cāng)庫(kù)進(jìn)行mr箫踩。

那么我們?nèi)绾伪WC自己的倉(cāng)庫(kù)里面有別人的修改呢

pull

可以看到遠(yuǎn)程倉(cāng)庫(kù)里面有個(gè)others.txt文件爱态,而本地是沒(méi)有的,為了能讓本地和遠(yuǎn)程倉(cāng)庫(kù)同步境钟,就需要用到pull

image

和push是對(duì)應(yīng)的锦担,一般后面也會(huì)跟著遠(yuǎn)程倉(cāng)庫(kù)的地址(上一篇文章中簡(jiǎn)單地說(shuō)了下如何設(shè)置不同的遠(yuǎn)程倉(cāng)庫(kù)的地址)

image

mr時(shí)conficts

可以發(fā)現(xiàn)本地也已經(jīng)有了新增的文件。注意慨削,我們修改的文件也是在遠(yuǎn)程倉(cāng)庫(kù)中的洞渔,那如果別人覺(jué)得我們的文件寫(xiě)得不夠好然后修改了套媚。

就比如上次提交的helloworld,覺(jué)得不行磁椒,太簡(jiǎn)單了堤瘤,只打印了一次,然后加了個(gè)for循環(huán)打印了100次浆熔,并且在每次打印后面加上序號(hào)本辐。

image

于此同時(shí),我們也覺(jué)得代碼也得不夠好医增,需要重復(fù)執(zhí)行1000遍慎皱,并且想在輸出完后再來(lái)一句經(jīng)典臺(tái)詞,于是乎我們改了本地的代碼叶骨。

image

接著心高彩烈地push了代碼茫多,并且提起了Merge Request,也有的平臺(tái)稱為Pull Request忽刽,這時(shí)候就會(huì)發(fā)現(xiàn)

image

有告警此Pull Request無(wú)法自動(dòng)合并地梨,你應(yīng)該手動(dòng)合并它 ,其實(shí)就是你和其他人同時(shí)修改了文件中的統(tǒng)一行缔恳,沖突了宝剖。之后就得是解決沖突,不同平臺(tái)的解決沖突的界面應(yīng)該不同歉甚,但是本質(zhì)都是git万细。

image

此時(shí)就需要到程序員之間討(撕)論(b),究竟是以誰(shuí)的為準(zhǔn)纸泄,這里假設(shè)這種赖钞,保持后面的i + 1 但是需要循環(huán)1000次。所以就需要修改為

image

其實(shí)這個(gè)文件的代碼原則上你刪了都沒(méi)關(guān)系聘裁,因?yàn)間it已經(jīng)跟你說(shuō)這個(gè)文件有沖突了雪营,至于如何選擇,需要保留什么衡便,git覺(jué)得我們會(huì)處理好的献起。當(dāng)完成這一切之后就和之前的mr是一致的,審核通過(guò)就可以合入了

image

但是在mr的時(shí)候再去解決沖突镣陕,總感覺(jué)有點(diǎn)麻煩谴餐,所以一般工作中常用的做法就是在commit之后,先pull一下最新代碼

pull時(shí)conflicts

可以看到遠(yuǎn)程的倉(cāng)庫(kù)此時(shí)是這樣滴

image

然后遠(yuǎn)程對(duì)文件進(jìn)行了修改呆抑,模擬其他同事合入了新代碼

image

同樣在不知道的情況下岂嗓,我們想要添加一個(gè)getStr的方法,并且在main函數(shù)里面調(diào)用

image

編輯完后正常add鹊碍,commit厌殉,但是不要push食绿,先pull一下遠(yuǎn)程倉(cāng)庫(kù)的代碼

image

在最后可以看到一個(gè)這樣的信息,就是讓我們解決沖突

Auto-merging hello.java
CONFLICT (content): Merge conflict in hello.java
Automatic merge failed; fix conflicts and then commit the result.

如何解決呢公罕,就是編輯沖突的文件即可器紧,用vim來(lái)看下沖突的文件此時(shí)長(zhǎng)啥樣

image

只需要把<<<<<<<=======>>>>>>> 還有HEAD這些非我們想要的字符刪掉熏兄,然后保留需要的代碼品洛,最后就正常add commit push mr即可。

這時(shí)候肯定會(huì)有剛學(xué)的小伙伴就問(wèn)了摩桶,那如果改的期間別的人又往倉(cāng)庫(kù)中合入了代碼咋辦呢

image

開(kāi)玩笑開(kāi)玩笑桥状,但是這種情況99.99%只會(huì)存在在理論中,現(xiàn)實(shí)工作中基本不會(huì)出現(xiàn)硝清,如果恰巧碰到了那就再解決沖突唄辅斟。

stash

  • 我們修改了多個(gè)文件比如修改了ABCDEF...Z這26個(gè)文件
  • 主管就過(guò)來(lái)說(shuō)有個(gè)模塊非常急,需要先合入ABCD這4個(gè)文件
  • 遠(yuǎn)程倉(cāng)庫(kù)已經(jīng)有人合入了LX這兩個(gè)文件
  • 然后記得養(yǎng)成良好的習(xí)慣芦拿,commit后pull一下遠(yuǎn)程代碼庫(kù)

總結(jié)就是不想提交所有修改的文件士飒,且修改的文件中有沖突的情況下

image

意思就是,本地有些文件可能在合入的時(shí)候被覆寫(xiě)蔗崎,此時(shí)有兩種選擇

  • commit酵幕,然后解決沖突
  • stash,然后pull下來(lái)缓苛,之后stash pop的時(shí)候如果有沖突芳撒,解決沖突

stash就是把本地的所修改的先放在一個(gè)git的“堆棧”中未桥,本地對(duì)遠(yuǎn)程就是未修改的狀態(tài)笔刹,然后就能正常的pull

image

使用git stash save [save message] 來(lái)暫存改變之后,能夠成功的pull下來(lái)冬耿,接下來(lái)看下git的狀態(tài)

image

既然能保存舌菜,那肯定能取出來(lái),上面也說(shuō)過(guò)亦镶,如果你save的文件和遠(yuǎn)程倉(cāng)庫(kù)修改的文件一樣日月,那么pop出來(lái)的時(shí)候肯定會(huì)有沖突

image

解決方案同樣是處理沖突,這里就不再贅述了

image

reset

第一篇文章中有說(shuō)到根據(jù)status中的提示染乌,add和commit都可以回撤山孔,那push后肯定也有對(duì)應(yīng)的操作。

image

可以看到至少有兩個(gè)文件是在本次的push中進(jìn)行的荷憋,要想撤回push,首先得知道push了啥褐望,都有哪些push

通過(guò)git log來(lái)查看勒庄,但是git log有很多騷操作(就是美化)串前,最常用的就是以下幾種

  • 啥都不加,輸出全部且冗長(zhǎng)

    image
  • 輸出前幾個(gè)实蔽,git log -p

    image
  • 單行輸出荡碾,git log --oneline

    image

    當(dāng)然是可以組合的,git log --oneline -2 自然就是單行輸出前2條記錄局装。

不難看到坛吁,每次的提交主題都是一串?dāng)?shù)字(版本號(hào))和commit時(shí)候的消息,當(dāng)我們想回退到其他版本的時(shí)候铐尚,就可以git reset [版本號(hào)] 即可拨脉。我知道網(wǎng)上關(guān)于reset也有很多騷操作,回退前多少次啥的宣增,但是都不如查看版本號(hào)回退來(lái)得好使玫膀,非要用的時(shí)候查一下就好了。

加入我要回退到上個(gè)版本爹脾,只需要這樣做

image

可以看到原本push的兩個(gè)文件現(xiàn)在已經(jīng)變成了待提交的狀態(tài)帖旨。

創(chuàng)作不易,如果對(duì)你有幫助灵妨,歡迎點(diǎn)贊解阅,收藏和分享啦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泌霍,一起剝皮案震驚了整個(gè)濱河市货抄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烹吵,老刑警劉巖碉熄,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異肋拔,居然都是意外死亡锈津,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)凉蜂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)琼梆,“玉大人,你說(shuō)我怎么就攤上這事窿吩【ピ樱” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵纫雁,是天一觀的道長(zhǎng)煌往。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么刽脖? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任羞海,我火速辦了婚禮,結(jié)果婚禮上曲管,老公的妹妹穿的比我還像新娘却邓。我一直安慰自己,他們只是感情好院水,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布腊徙。 她就那樣靜靜地躺著,像睡著了一般檬某。 火紅的嫁衣襯著肌膚如雪撬腾。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,850評(píng)論 1 290
  • 那天橙喘,我揣著相機(jī)與錄音时鸵,去河邊找鬼。 笑死厅瞎,一個(gè)胖子當(dāng)著我的面吹牛饰潜,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播和簸,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼彭雾,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了锁保?” 一聲冷哼從身側(cè)響起薯酝,我...
    開(kāi)封第一講書(shū)人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爽柒,沒(méi)想到半個(gè)月后吴菠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浩村,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年堂氯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缺谴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坑鱼。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡持灰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出怎燥,到底是詐尸還是另有隱情瘫筐,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布铐姚,位于F島的核電站策肝,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驳糯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一篇梭、第九天 我趴在偏房一處隱蔽的房頂上張望氢橙。 院中可真熱鬧酝枢,春花似錦、人聲如沸悍手。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坦康。三九已至竣付,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滞欠,已是汗流浹背古胆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留筛璧,地道東北人逸绎。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像夭谤,于是被迫代替她去往敵國(guó)和親棺牧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349