1. 程式人生 > 實用技巧 >Git 多人開發及常見問題

Git 多人開發及常見問題

多人協同開發

  • 模擬張三先編輯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在修改,修改完立即commitpush
    • 一定要確保自己正在修改的檔案是最新版本的
    • 各自開發各自的模組
    • 如果要修改公共檔案,一定要先確認有沒有人正在修改
    • 下班前一定要提交程式碼,上班第一件事拉取最新程式碼
    • 一定不要擅自修改同事的程式碼