1. 程式人生 > >git學習之旅(三)——合併衝突(conflict)

git學習之旅(三)——合併衝突(conflict)

「情況1」同一檔案內容衝突

  • cd ~/user2/sample
  • git pull
  • echo "Hello,User2" >> user.txt
  • git add .
  • git commit -m "user2 conflict commit"
  • git push origin master
  • cd ~/user1/sample
  • echo "Hello,User1" >> user.txt
  • git pull

由於發生了衝突不能合併新的版本,要先提交

  • git add .
  • git commit -m "user1 conflict commit"
  • git pull

因為2個使用者都想同一檔案同一地發進行修改,即發生了衝突(conflict),使用文字編輯器可以看到有以下標誌提示

必須修正衝突的地方再提交,改為如下結果

  • git add .
  • git commit -m "solve confict"
  • git log

  • git push origin master

「擴充套件」圖形使用者介面

修改衝突建議使用圖形介面工具
  • sudo apt-get install meld
  • git mergetool --tool=meld

「情況2」重新命名檔案

  • cd ~/user1/sample
  • mv user.txt user11.txt
  • git add .

  • git status

  • git add -A

修改檔名相當於刪除舊的檔案,新建一個檔案,涉及刪除檔案根據以上提示使用git rm <file>,也可以使用git add -A包括新增(new file),修改(modify),刪除(deleted)都全部提交,至於git add . 不包括刪除。

  • git status

  • git commit -m "user1 renamed"
  • git push origin master
  • cd ~/user2/sample
  • mv user.txt user22.txt
  • git add -A
  • git commit -m "user2 renamed"
  • git pull

ll

  • ls -l

  • git status

發現同時存在2個檔案,要將衝突修正

  • rm user22.txt
  • mv user11.txt user.txt
  • git add -A
  • git commit -m "solve filename conflict"
在程式碼是共用的或者是介面,修改檔名或重新命名變數會涉及其他模組的程式碼修改,之後很容易發生衝突或者是邏輯錯誤。所有儘量避免。如果要改最好是讓其他人都將修改提交到伺服器且工作區不再編譯,再使用軟體工具進行重構。