Git 多人開發及常見問題
阿新 • • 發佈:2020-12-16
多人協同開發
- 模擬張三先編輯
login.py
檔案程式碼- 進入張三本地倉庫:
cd Desktop/zhangsan/test007
- 編輯程式碼:
num1 = 10
- 本地倉庫記錄版本:
git commit -am '第一個變數'
- 推送到遠端倉庫:
git push
- 進入張三本地倉庫:
- 模擬經理後編輯
login.py
檔案程式碼- 進入經理本地倉庫:
cd Desktop/manager/test007/
- 經理同步伺服器程式碼:
git pull
- 編輯程式碼:
num2 = 20
- 本地倉庫記錄版本:
git commit -am '第二個變數'
- 推送到遠端倉庫:
git push
- 進入經理本地倉庫:
- 模擬張三同步伺服器程式碼
- 本次可以把
num2
同步到張三的本地倉庫
- 本次可以把
- 按照以上步驟迴圈操作,即可實現基本的協同開發
- 總結:
- 要使用git命令操作倉庫,需要進入到倉庫內部
- 要同步伺服器程式碼就執行:
git pull
- 本地倉庫記錄版本就執行:
git commit -am '版本描述'
- 推送程式碼到伺服器就執行:
git push
- 編輯程式碼前要先
pull
,編輯完再commit
,最後推送是push
程式碼衝突思考
- 提示:多人協同開發時,避免不了會出現程式碼衝突的情況
- 原因:多人同時修改了同一個檔案
- 危害:會影響正常的開發進度
- 注意:一旦出現程式碼衝突,必須先解決再做後續開發
關於這程式碼衝突之一塊,自己做了一個大膽的猜想實踐
可能過程跟問題是有點傻里傻氣的,我認為學習就是這樣:
大膽的提出問題,
去大膽的猜想,
最後再實踐,得出相應的結論.
不成熟的想法一:
如果經理跟張三同時上傳了一個檔案,且內容也一致,
經理上傳無問題,那麼張三上傳還會衝突嗎?
還是說會發生別的問題?
猜想1:
會產生衝突,由於操作同一個檔案,
猜想2:
不會衝突,檔案內容會覆蓋
實踐結論:
經過實踐得知會產生衝突,
多人同時對一個檔案修改,
無論修改內容是否一致,都會產生衝突
不成熟的想法二:
如果經理跟張三寫兩個不同檔案,但內容一致,還會衝突嗎?
或者說會不會產生別的問題?
猜想1:
由於操作本身不是同一個檔案,所以不會衝突,
猜想2:
會產生衝突,(為什麼會衝突?原理是在實踐後得到)
實驗結論:
產生了一個版本衝突,
即使同時提交,也會有
一個率先提交完資料,
所致後者提交編輯的不是new的pull,
會丟擲一個問題讓自己先手動git pull
,
再進行提交資料 git push
最後總結:
- 容易衝突的操作方式
- 多個人同時操作了同一個檔案
- 一個人一直寫不提交
- 修改之前不更新最新程式碼
- 提交之前不更新最新程式碼
- 擅自修改同事程式碼
- 減少衝突的操作方式
- 養成良好的操作習慣,先
pull
在修改,修改完立即commit
和push
- 一定要確保自己正在修改的檔案是最新版本的
- 各自開發各自的模組
- 如果要修改公共檔案,一定要先確認有沒有人正在修改
- 下班前一定要提交程式碼,上班第一件事拉取最新程式碼
- 一定不要擅自修改同事的程式碼
- 養成良好的操作習慣,先