自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試官:說(shuō)說(shuō) Git 發(fā)生沖突的場(chǎng)景?如何解決?

開源
應(yīng)用在命令中,就是push、pull、stash、rebase等命令下都有可能產(chǎn)生沖突情況,從本質(zhì)上來(lái)講,都是merge和patch(應(yīng)用補(bǔ)丁)時(shí)產(chǎn)生沖突。

[[418175]]

本文轉(zhuǎn)載自微信公眾號(hào)「JS每日一題」,作者灰灰。轉(zhuǎn)載本文請(qǐng)聯(lián)系JS每日一題公眾號(hào)。

一、是什么

一般情況下,出現(xiàn)沖突的場(chǎng)景有如下:

  • 多個(gè)分支代碼合并到一個(gè)分支時(shí)
  • 多個(gè)分支向同一個(gè)遠(yuǎn)端分支推送

具體情況就是,多個(gè)分支修改了同一個(gè)文件(任何地方)或者多個(gè)分支修改了同一個(gè)文件的名稱

如果兩個(gè)分支中分別修改了不同文件中的部分,是不會(huì)產(chǎn)生沖突,直接合并即可

應(yīng)用在命令中,就是push、pull、stash、rebase等命令下都有可能產(chǎn)生沖突情況,從本質(zhì)上來(lái)講,都是merge和patch(應(yīng)用補(bǔ)丁)時(shí)產(chǎn)生沖突

二、分析

在本地主分值master創(chuàng)建一個(gè)a.txt文件,文件起始位置寫上master commit,如下:

然后提交到倉(cāng)庫(kù):

  • git add a.txt
  • git commit -m 'master first commit'

創(chuàng)建一個(gè)新的分支featurel1分支,并進(jìn)行切換,如下:

  1. git checkout -b featurel1 

然后修改a.txt文件首行文字為 featurel commit,然后添加到暫存區(qū),并開始進(jìn)行提交到倉(cāng)庫(kù):

  • git add a.txt
  • git commit -m 'featurel first change'

然后通過(guò)git checkout master切換到主分支,通過(guò)git merge進(jìn)行合并,發(fā)現(xiàn)不會(huì)沖突

此時(shí)a.txt文件的內(nèi)容變成featurel commit,沒有出現(xiàn)沖突情況,這是因?yàn)間it在內(nèi)部發(fā)生了快速合并

如果當(dāng)前分支的每一個(gè)提交(commit)都已經(jīng)存在另一個(gè)分支里了,git 就會(huì)執(zhí)行一個(gè)“快速向前”(fast forward)操作

git 不創(chuàng)建任何新的提交(commit),只是將當(dāng)前分支指向合并進(jìn)來(lái)的分支

如果此時(shí)切換到featurel分支,將文件的內(nèi)容修改成featrue second commit,然后提交到本地倉(cāng)庫(kù)

然后切換到主分支,如果此時(shí)在a.txt文件再次修改,修改成mastet second commit,然后再次提交到本地倉(cāng)庫(kù)

此時(shí),master分支和feature1分支各自都分別有新的提交,變成了下圖所示:

這種情況下,無(wú)法執(zhí)行快速合并,只能試圖把各自的修改合并起來(lái),但這種合并就可能會(huì)有沖突

現(xiàn)在通過(guò)git merge featurel進(jìn)行分支合并,如下所示:

從沖突信息可以看到,a.txt發(fā)生沖突,必須手動(dòng)解決沖突之后再提交

而git status同樣可以告知我們沖突的文件:

打開a.txt文件,可以看到如下內(nèi)容:

git用<<<<<<<,=======,>>>>>>>標(biāo)記出不同分支的內(nèi)容:

  • <<<<<<< 和 ======= 之間的區(qū)域就是當(dāng)前更改的內(nèi)容
  • ======= 和 >>>>>>> 之間的區(qū)域就是傳入進(jìn)來(lái)更改的內(nèi)容

現(xiàn)在要做的事情就是將沖突的內(nèi)容進(jìn)行更改,對(duì)每個(gè)文件使用 git add 命令來(lái)將其標(biāo)記為沖突已解決。一旦暫存這些原本有沖突的文件,Git就會(huì)將它們標(biāo)記為沖突已解決然后再提交:

  • git add a.txt
  • git commit -m "conflict fixed"

此時(shí)master分支和feature1分支變成了下圖所示:

使用git log命令可以看到合并的信息:

三、總結(jié)

當(dāng)Git無(wú)法自動(dòng)合并分支時(shí),就必須首先解決沖突,解決沖突后,再提交,合并完成

解決沖突就是把Git合并失敗的文件手動(dòng)編輯為我們期望的內(nèi)容,再提交

參考文獻(xiàn)

  • https://www.liaoxuefeng.com/wiki/896043488029600/900004111093344
  • https://vue3js.cn/interview

 

責(zé)任編輯:武曉燕 來(lái)源: JS每日一題
相關(guān)推薦

2021-08-09 07:47:40

Git面試版本

2021-08-16 08:33:26

git

2021-08-11 08:53:23

Git命令面試

2021-05-31 10:35:34

TCPWebSocket協(xié)議

2023-05-30 18:13:59

Git代碼

2021-08-19 08:36:22

Git ResetGit Revert版本

2021-08-17 07:15:16

Git RebaseGit Merge面試

2021-09-28 07:12:09

測(cè)試路徑

2021-09-16 07:52:18

算法應(yīng)用場(chǎng)景

2021-07-07 08:36:45

React應(yīng)用場(chǎng)景

2021-09-29 07:24:20

場(chǎng)景數(shù)據(jù)

2021-07-12 08:35:24

組件應(yīng)用場(chǎng)景

2024-11-19 15:13:02

2025-04-16 00:00:01

JWT客戶端存儲(chǔ)加密令

2025-04-08 00:00:00

@AsyncSpring異步

2023-12-27 18:16:39

MVCC隔離級(jí)別幻讀

2021-05-20 08:34:03

CDN原理網(wǎng)絡(luò)

2024-05-30 08:04:20

Netty核心組件架構(gòu)

2024-08-22 10:39:50

@Async注解代理

2024-03-05 10:33:39

AOPSpring編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)