git fetch and git pull &沖突


1.git fetch和git pull之間的區別
git fetch只會將本地庫所關聯的遠程庫的commit id更新至最新,fetch不會改變代碼,如果想使代碼更新,需要使用git merge origin/master,以上的兩步可以合並為一步:git pull origin master (獲取代碼並合並)
git pull會將本地庫更新至遠程庫的最新狀態,獲取代碼並自動合並.
 
 
2.git fetch后怎么比較差異,也可以在fetch后再 Compare with Branch (in pycharm)
Git中從遠程的分支獲取最新的版本到本地有這樣2個命令:
1. git fetch:相當於是從遠程獲取最新版本到本地,不會自動merge
Git fetch origin master
git log -p master..origin/master
git merge origin/master
以上命令的含義:
  首先從遠程的origin的master主分支下載最新的版本到origin/master分支上
  然后比較本地的master分支和origin/master分支的差別
  最后進行合並
  上述過程其實可以用以下更清晰的方式來進行:
git fetch origin master:tmp
git diff tmp
git merge tmp
 
3.關於沖突
如果兩個開發者修改了同一個文件的同一段代碼,或者修改了同一個文件路徑,提交並push到sourceTree時會提示沖突。需要先修正本地沖突,沖突的標志是“<<<<<<<”,"=======",">>>>>>>"之間的部分,解決的辦法:
(1)第一種是逐行刪掉沖突,找到protect.pbxproj,右鍵選擇“在finder中查看”,找到protect.pbxproj文件雙擊打開,cmd+f搜索“<<<<<<<”,找到沖突的部分,刪除“<<<<<<<”及其對應的行,刪除“=======”及其對應的行,刪除“>>>>>>>”及其對應的行,然后重新提交就可以了。
(2)第二種方法,右鍵---->解決沖突——>使用他人版本解決沖突---->確定-----重新提交
(3)第三種方法,revert沖突的本地文件,然后重新提交
 
如果文件已經提交到本地倉庫,但未push到服務器,出現沖突,可以回滾本次提交。
拉取文件時如果出現文件沖突,解決辦法:revert沖突的本地文件,然后重新提交。
 
(下邊是我自己的總結,關於沖突的解決方案)
這里需要說明的是,沖突大概有兩種情況:
(1)沒有代碼的文件沖突:一般像config或者工程文件沖突,我們的處理就是放棄自己的本地修改,即revert(重置)自己的config或者工程文件,再次拉取就沒有什么問題了。
(2)有代碼的文件沖突:這種情況就要注意了,十分建議在進行下一步操作之前,備份一份自己的代碼,最少是自己動過的類,不然很有可能自己的辛苦勞動在“重置”之后不見了。這種情況我的處理方法是:備份后選擇將沖突的類全部重置,然后拉取,此時就不會沖突了,再把自己寫的代碼拷貝到拉取后的相應的類文件里面,再提交推送就可以了。
(3)小技巧避免沖突: 一般我們提交代碼的順序是:拉取-提交-推送。這個沒有問題,但是有時候會只是提交了,忘了推送,過了一個小時或者一段時間,才想起來,結果推送的時候沖突了,甚至你即便剛剛提交了,馬上點擊推送,都可能造成沖突:因為有人可能在你操作:拉取之后,提交之前,又推送了,你的版本不是最新的版本了,可能造成沖突。所以建議大家提交代碼的順序是:拉取-提交-拉取-推送。而且,最好是提交了代碼,馬上拉取,馬上推送,盡量避免不沖突。因為沖突給我們帶來不必要的麻煩
甚至有這種方法避免操作,屢試不爽:想提交自己的代碼了,先不拉取,先提交,提交好了,再拉取,再推送,即:提交-拉取-推送。這種方法基本上不會沖突,因為保證了你的代碼是最新的版本,這種操作下甚至於兩個人同時動一個類文件都不會沖突。總之,建議大家使用這種方法。親測無誤。
(4)提交代碼只動自己的類,不要動別人的!如果,在開發過程中,兩個人需要動同一個類的話,兩個人商量好,誰先誰后,不要出錯就好了。
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM