Git commit與pull的先後順序

整理這個問題的起因:
1.前些天一個晚輩問我關於commit與pull的先後順序問題
2.今天又與同事爭論了一番commit與pull的先後順序問題

我的建議是:
1.在本地修改與遠程代碼無衝突的情況下,優先使用:pull->commit->push
2.在本地修改與遠程代碼有衝突的情況下,優先使用:commit->pull->push

那麼我們怎麼去確定是否有衝突呢?
一般我們在合作開發一個項目的過程中,都會有分工,有時會兩個人同時修改一個類,有時整個類都是你自己在開發。
如果都是自己在開發的類,當然優先使用pull->commit->push,爲什麼我更傾向這種方式呢,因爲這樣會減少Git沒有必要的merge。

如果有衝突的情況下,先pull了會出現什麼問題呢?
如果你的判斷失誤,在本地修改與遠程代碼有衝突的情況下,先執行了git-pull,即使是這樣也不用擔心,git會給你一個錯誤提示,這時候你再去執行commit->pull->push也是沒有問題的。

我們可以看一下下面這個git提交記錄的截圖:
圖片描述
圖中,我們可以看到四次merge的提交,實際上這四次都是沒有衝突的merge,這是commit->pull->push中,git自動生成的merge。
如果這裏我們採用pull->commit->push呈現出來的就會是一條沒有merge、沒有多餘commit的一條完美分支。

git-pull(https://git-scm.com/docs/git-pull)
Incorporates changes from a remote repository into the current branch. In its default mode, git pull is shorthand for git fetch followed by git merge FETCH_HEAD.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章