close

創建兩個A跟B資料夾,模擬A和B兩位開發人員

開啟VSCode,新增hello.txt並輸入內容Hello!

查詢目前資料夾狀態

> git status

發現一個修改過的檔案hello.txt

加入目前資料夾內變更的檔案

> git add .

git儲存

> git commit -m "First commit"

確認查詢目前資料夾狀態

> git log

顯示一筆 commitID c0e4f1f1298bd46b4d4b58469b4f6af1e0b2f04d

HEAD指向 master分支

在git hub遠端建立一個新的repository,名稱為conflic-demo.

依照提示git remote add指令,加入遠端git hub,名稱為origin,網址為https://github.com/me1237guy/conflic-demo.git

git remote add origin https://github.com/me1237guy/conflic-demo.git

接著,將本地端(A開發者)的git上傳

> git push -u origin master

檢查git hub,會發現一筆上傳紀錄

 

B開發者準備複製A使用者開發的資料

> git clone https://github.com/me1237guy/conflic-demo.git .

在B開發者下載git hub資料的同時,A開發者仍繼續修改hello.txt

M表示modified

開發者A修改hello.txt後檢查git 狀態

> git status

發現hello.txt有變動,因此將目前資料夾stage

> git add .

接著commit

>git commit -m " Modify hello.txt  by User A"

 準備push到git hub

 A開發者上傳至git hub

 

兩筆上傳紀錄,但是目前B開發者並不曉得有最新的一筆,

B開發者仍然以A開發者上傳的第一版進行開發

目前為止,比較A和B本地端git的版本

A開發者: 有兩份紀錄

B開發者: 僅有一份紀錄

場景回到B開發者

B開發者修改hello.txt,

> git status

發現更動利用 git add加入更動檔案至stage

>git add .

儲存更動並標記為"Modify hello.txt by User B"

> git commit -m "Modify hello.txt by User B"

設定遠端repository為origin

> git remote add origin https://github.com/me1237guy/conflic-demo.git

B開發者想要上傳目前修改後的版本至git hub

>git push origin master

不意外,B開發者上傳時會發生衝突conflict訊息,原因很簡單因為A開發者在git hub上的版本與B開發者不一致所導致

所以B開發者得先從git hub更新一份目前A開發者上傳最新版本

> git pull

Auto merge failed B開發者會看到跳出衝突的提示

 <<<< HEAD 表示本地端指向的版本及其內容

>>>>> 5f0b5 表示遠端的版本及其內容

在此保留B開發者的版本

修改後檢查一下狀態

>git status

解決衝突後,再次更新

在B開發者目前的版本紀錄,依序為Merge遠端的版本(B開發者已解決衝突)、Modify hello.txt by User B、Modify hello.txt by User A和First commit四個

解決完衝突接著準備再次從本地上傳至git hub

> git push origin master

B開發者上傳後,git hub的確顯示四筆儲存紀錄

點選時間圖案,可以進一步看到四個版本細節如下:

arrow
arrow
    全站熱搜

    me1237guy 發表在 痞客邦 留言(0) 人氣()