剛開始學習git,有個疑問.小A和小B都從遠端git clone了最新的版本。 兩個人都在本地對程式碼進行了修改。 小A先提交了程式碼。 這時小B再提交程式碼,會發生什麼事? 是會覆蓋小A提交的程式碼還是不讓提交呢?
先回答問題:
小A先提交了程式碼,遠端函式庫和小A得本地函式庫同步,假設為0 -> a此時小B的本地函式庫為0 -> b,遠端函式庫的版本比本機函式庫較新,git會拒絕推送並報錯誤。
git 會要求 git pull 更新本地庫,而 pull 操作相當於自動的 fetch 和 merge 操作,會試圖自動將遠端程式庫合併入本機程式庫,在有衝突時再要求手動合併。
會提示小B先pull 程式碼,如果小B修改的程式碼那一行跟小A的一樣,那個檔案那一行會提示衝突,這裡需要手動合併,如果修改的不一樣,Git會自動合併相關程式碼
如果是改的不同地方 可以直接merge 如果改了相同的地方 git會自動把兩個版本的程式碼放到檔案裡面 等你選
小B先吧小A的代碼 pull 回來,然後合併,然後才能再提交。
每次開發完成後 先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一份他的黏進去。
先回答問題:
小A先提交了程式碼,遠端函式庫和小A得本地函式庫同步,假設為0 -> a
此時小B的本地函式庫為0 -> b,遠端函式庫的版本比本機函式庫較新,git會拒絕推送並報錯誤。
git 會要求 git pull 更新本地庫,而 pull 操作相當於自動的 fetch 和 merge 操作,會試圖自動將遠端程式庫合併入本機程式庫,在有衝突時再要求手動合併。
會提示小B先pull 程式碼,如果小B修改的程式碼那一行跟小A的一樣,那個檔案那一行會提示衝突,這裡需要手動合併,如果修改的不一樣,Git會自動合併相關程式碼
如果是改的不同地方 可以直接merge 如果改了相同的地方 git會自動把兩個版本的程式碼放到檔案裡面 等你選
小B先吧小A的代碼 pull 回來,然後合併,然後才能再提交。
每次開發完成後 先add commit 然後pull遠端程式碼 有衝突的話盡快解決 然後再push 當然我說的是不考慮分支的情況下
有個習慣,我覺得聽不錯的,就是每次提交代碼的時候,你要先pull 再push 這樣很大程度上會避免報錯,至於解決衝突,這是代碼的問題,報錯後文件會顯示紅色,有個分割線,上面的是人家的程式碼,下面的是你自己的程式碼,根據需要取捨。
看標題我就醉了,既然是衝突,那肯定是要手動解決的。
工具判斷不瞭如何合併程式碼,才會衝突。如果Git自己能解決衝突了,那就不需要人來寫程式了。
小B在提交程式碼時應先git pull更新程式碼,如果程式碼有衝突就會出現類似這樣的錯誤:
這時候git要求你先手動修改衝突,找到提示的文件,衝突的部分就會出現《《《《來分隔程式碼改變的部分,需要修改那部分,就看你怎麼選了。
git不會自己解決衝突,只會試著去合併patch,如果git發現兩個patch修改了相同內容就會主動使用>>>>>>>來顯示衝突,然後在認為解決。
如果你的程式碼修改部分少,你可以copy一份他的黏進去。