創建兩個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的確顯示四筆儲存紀錄
點選時間圖案,可以進一步看到四個版本細節如下:
留言列表