最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Git遇到?jīng)_突?解決也太簡單了!

2023-01-06 22:32 作者:DevWeekly  | 我要投稿

程序員寶藏庫https://gitee.com/sharetech_lee/CS-Books-Store

git沖突是開發(fā)過程中很難避免的,對很多git初學者來說也是比較有障礙和門檻的一部分知識。

我認為要想徹底理解一個問題,首先要清楚這個問題是怎么產(chǎn)生的,然后才可以更加簡單的解決這個問題,而且這樣做還可以從根本上加深對git的用法理解,避免每次遇到時都需要反反復復的搜索答案。

下面就逐步的介紹一下,幫助大家徹底理解什么是合并沖突?如何解決合并沖突?

什么是Git合并?什么是合并沖突?

首先,Git 是一個版本控制系統(tǒng),可以保存所有文件版本的歷史記錄。 開發(fā)者可以隨時回退到任何版本并檢索舊版本。

假設,創(chuàng)建了一個名為 abc.txt 的文件并將其推送到 Git 倉庫。 此時,該文件具有與其關聯(lián)的當前版本。 現(xiàn)在,如果你的同事更改了同一個文件并將其推回倉庫,則該文件關聯(lián)了一個新版本。

Git Merge 是一項功能,可讓使文件的當前內(nèi)容與其他先前版本保持同步。 換句話說,Git 合并可幫助你在將新更改推送到同一文件之前合并來自其他開發(fā)人員的更改。

img


在 Git 合并的過程中,需要理解兩件事情:

  • 更改:文件的兩個版本之間發(fā)生了什么類型的操作? 添加或刪除新內(nèi)容,或更新現(xiàn)有內(nèi)容。

  • 區(qū)域:更改的區(qū)域有兩種可能性。 更改發(fā)生在文件的不同區(qū)域或更改發(fā)生在文件的同一區(qū)域。 同一區(qū)域意味著開發(fā)人員圍繞文件的同一位置(例如,段落、行等)進行了更改。

如果更改不同區(qū)域時,這種情況比較簡單,Git 使用自動合并策略自動處理大多數(shù)這些情況。

但是當更改發(fā)生在文件的同一區(qū)域時,Git 不會執(zhí)行自動合并,它會提示沖突讓開發(fā)者解決。

以一個具體的例子來解釋合并沖突的產(chǎn)生過程:

  • 張三更改了文件abx.txt,然后把它提交到了遠程倉庫

  • 李四并不知道張三改了這個文件,與此同時,它也對同一文件、同一區(qū)域做了更改

  • 李四把更改推送到遠程倉庫,這是Git會提示版本過舊,需要更新

  • 李四重新從遠程倉庫拉取代碼更新,再次提交時會收到自動合并沖突的警告

img

這個過程是不是似曾相識?

這就是合并沖突以及它的產(chǎn)生過程,下面就來介紹如何解決合并沖突!

如何解決合并沖突?

解決合并沖突其實并不難,在90%的情況下,當你對內(nèi)容變化清楚的時候就會簡單很多。

接著前面的例子,李四更改abc.txt之后,本地文件就包含自己的修改和張三的修改。所以,接下來就需要選擇具體的處理措施:

  • 保留張三的更改并刪除自己的更改

  • 刪除張三的更改并保留自己的更改

  • 保留張三和自己的更改

  • 刪除張三和自己的更改

應該選擇哪一個呢? 這完全取決于項目的需求。 但是,至少要保證即將發(fā)生的變化,這樣才知道選擇何種措施。然后才可以逐步解決沖突。

下面就來逐步解決沖突!

場景1:修改同一文件同一區(qū)域

當 Git 由于更改在同一區(qū)域中而無法執(zhí)行自動合并時,它會用特殊字符指示沖突的區(qū)域,字符序列是這樣的:

  • <<<<<<<

  • =======

  • >>>>>>>

<<<<<<< 和 ======= 之間的所有內(nèi)容都是你的本地更改,這些更改還不在遠程存儲庫中。 ======= 和 >>>>>>>> 之間的所有行都是來自遠程存儲庫或另一個分支的更改。

接著前面的例子,假如張三更改后的內(nèi)容是:

- Eat
- Read
- Gym

李四更改后的內(nèi)容是:

- Eat
- Read
- Sleep

合并時就會產(chǎn)生下面沖突:

- Eat
- Read
<<<<<<< HEAD
- Sleep
=======
- Gym
>>>>>>>

接下來就需要對比這兩部分內(nèi)容,做出自己的選擇,應該保留哪一個或者刪除哪一個,這個完全取決于業(yè)務的現(xiàn)實情況。

在接受了更改之后,還沒有結(jié)束,還需要做如下操作:

git add <files>
git commit -m "Message"
git push

這樣就解決了合并沖突。

場景2:文件在遠程/其他分支被刪除

在刪除的文件合并沖突中,一個開發(fā)人員在一個分支中刪除一個文件,而另一個開發(fā)人員在另一個分支中編輯同一個文件。 在這種情況下,你需要決定是要保留該文件還是刪除它。

要將已刪除的文件添加回你的分支,需要執(zhí)行以下操作:

git add <file-name>

如果確定要刪除這個問津啊,就執(zhí)行下面操作:

git rm <file-name>

然后,就是把更改提交:

git commit -m "Message"
git push

上面2種場景就是git沖突中比較常見的現(xiàn)象,其實,在git使用過程中很多報錯或者告警信息都提示的非常情況,我們?nèi)绻軌蜉p松的讀懂報錯信息、理解基本原理以及問題發(fā)生原因,其實解決問題就是水到渠成的事情!

建議大家有空可以多瀏覽Github,有很多好用的開源免費工具。但是,目前Github上項目多如牛毛,而且刷榜現(xiàn)在也非常嚴重,想要找到優(yōu)質(zhì)的項目變得越來越難。這里,給大家推薦Github上一個非常不錯的項目《DevWeekly》,這個項目每周都會精挑細選一些優(yōu)質(zhì)的開源項目,涵蓋C++、JAVA、JavaScript、Python、Go等不同編程語言。此外,還有一些開源工具、優(yōu)秀的技術文章,而且考慮到很多同學訪問Github不方便的問題,我還特意同步到了Gitee,建議大家看一下:

https://gitee.com/sharetech_lee/DevWeekly

hello,大家好,我是Jackpop,重點大學本科畢業(yè)后保送到哈工大計算數(shù)學專業(yè)讀研,有多年國內(nèi)頭部互聯(lián)網(wǎng)、IT公司工作經(jīng)驗,先后從事過計算機視覺、推薦系統(tǒng)、后端、數(shù)據(jù)等相關工作。如果同學們在升學考研、職業(yè)規(guī)劃、高考志愿、簡歷優(yōu)化、技術學習等方面有困惑,歡迎大家前來咨詢!


Git遇到?jīng)_突?解決也太簡單了!的評論 (共 條)

使用qq登录你需要登录后才可以评论。
万山特区| 通州市| 炎陵县| 贵州省| 正阳县| 十堰市| 吴江市| 桐梓县| 额敏县| 日喀则市| 思茅市| 凌云县| 韶关市| 福安市| 饶平县| 龙岩市| 南丹县| 民权县| 五常市| 怀仁县| 北宁市| 凤庆县| 德兴市| 德化县| 柘荣县| 京山县| 中方县| 应城市| 阳东县| 女性| 荆州市| 九龙坡区| 怀远县| 太和县| 临沭县| 黎平县| 南开区| 武义县| 泽库县| 大城县| 二连浩特市|