git是怎麼處理衝突的?
淡淡烟草味
淡淡烟草味 2017-05-02 09:33:30
0
10
819

剛開始學習git,有個疑問.
小A和小B都從遠端git clone了最新的版本。
兩個人都在本地對程式碼進行了修改。
小A先提交了程式碼。
這時小B再提交程式碼,會發生什麼事?
是會覆蓋小A提交的程式碼還是不讓提交呢?

淡淡烟草味
淡淡烟草味

全部回覆(10)
伊谢尔伦

先回答問題:

小A先提交了程式碼,遠端函式庫和小A得本地函式庫同步,假設為0 -> a
此時小B的本地函式庫為0 -> b,遠端函式庫的版本比本機函式庫較新,git會拒絕推送並報錯誤。

git 會要求 git pull 更新本地庫,而 pull 操作相當於自動的 fetch 和 merge 操作,會試圖自動將遠端程式庫合併入本機程式庫,在有衝突時再要求手動合併。

漂亮男人

會提示小B先pull 程式碼,如果小B修改的程式碼那一行跟小A的一樣,那個檔案那一行會提示衝突,這裡需要手動合併,如果修改的不一樣,Git會自動合併相關程式碼

PHPzhong

如果是改的不同地方 可以直接merge 如果改了相同的地方 git會自動把兩個版本的程式碼放到檔案裡面 等你選

迷茫

小B先吧小A的代碼 pull 回來,然後合併,然後才能再提交。

phpcn_u1582

每次開發完成後 先add commit 然後pull遠端程式碼 有衝突的話盡快解決 然後再push 當然我說的是不考慮分支的情況下

淡淡烟草味

有個習慣,我覺得聽不錯的,就是每次提交代碼的時候,你要先pull 再push 這樣很大程度上會避免報錯,至於解決衝突,這是代碼的問題,報錯後文件會顯示紅色,有個分割線,上面的是人家的程式碼,下面的是你自己的程式碼,根據需要取捨。

小葫芦

看標題我就醉了,既然是衝突,那肯定是要手動解決的。

工具判斷不瞭如何合併程式碼,才會衝突。如果Git自己能解決衝突了,那就不需要人來寫程式了。

習慣沉默

小B在提交程式碼時應先git pull更新程式碼,如果程式碼有衝突就會出現類似這樣的錯誤:

error: Your local changes to the following files would be overwritten by merge:
****/****/**.php
Please, commit your changes or stash them before you can merge.

這時候git要求你先手動修改衝突,找到提示的文件,衝突的部分就會出現《《《《來分隔程式碼改變的部分,需要修改那部分,就看你怎麼選了。

大家讲道理

git不會自己解決衝突,只會試著去合併patch,如果git發現兩個patch修改了相同內容就會主動使用>>>>>>>來顯示衝突,然後在認為解決。

我想大声告诉你

如果你的程式碼修改部分少,你可以copy一份他的黏進去。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板