日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Git版本控制】为什么要先commit,然后pull,最后再push?而不是commit然后直接push?...

發布時間:2025/7/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Git版本控制】为什么要先commit,然后pull,最后再push?而不是commit然后直接push?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

情況是這樣的,現在遠程有一個倉庫,分支就一個,是master。然后我本地的倉庫是從遠程的master上clone下來的。大家都是clone下來,再在自己本地改好,再commit然后pull然后push,大家都是這么做的。那么現在問題來了:

1,那我本地這個也算是個分支?還是就是一個本地倉庫?

答:本地和遠程的關系相當于兩個分支,你感覺一樣是因為你git pull?的時候已經自動給綁定好對應關系了, set-upstream..balbala

2,如果我在遠程新建了個分支,然后我pull了下來,那我本地到底有分支這個說法嗎?我本地的分支是不是就是那個遠程新建的分支?

答:你遠程新建了一個分支拉到本地的道理是一樣的,屬于復制了一份,但是本地分支和遠程分支已經是兩個東西了

3,本地倉庫和本地分支有什么區別?

答:本地分支屬于本地倉庫里,是包含關系,一個倉庫里可以有很多分支

4,commit是提交到本地倉庫,然后push,這個push是把所有代碼推到遠程倉庫,還是只是把commit的地方推到遠程倉庫?

答:肯定不會全量推送到遠程的,是通過對比 commit 的記錄,如果本地高于遠程就直接把多出來的commit?給懟上去,如果本地分支的最新版本和遠程的?commit?有沖突,就需要解決沖突。

5,那為什么要先commit,然后pull,然后再push,我pull了,豈不是把自己改的代碼都給覆蓋掉了嘛,因為遠程沒有我改的代碼,我pull,豈不是覆蓋了我本地的改動好的地方了?那我還怎么push?

答:這個先 commit 再 pull 最后再push 的情況就是為了應對多人合并開發的情況,

  • commit?是為了告訴 git 我這次提交改了哪些東西,不然你只是改了但是 git 不知道你改了,也就無從判斷比較;

  • pull是為了本地 commit 和遠程commit 的對比記錄,git 是按照文件的行數操作進行對比的,如果同時操作了某文件的同一行那么就會產生沖突,git 也會把這個沖突給標記出來,這個時候就需要先把和你沖突的那個人拉過來問問保留誰的代碼,然后在?git add && git commit && git pull?這三連,再次 pull 一次是為了防止再你們協商的時候另一個人給又提交了一版東西,如果真發生了那流程重復一遍,通常沒有沖突的時候就直接給你合并了,不會把你的代碼給覆蓋掉

  • 出現代碼覆蓋或者丟失的情況:比如A B兩人的代碼pull 時候的版本都是1,A在本地提交了2,3并且推送到遠程了,B 進行修改的時候沒有commit?操作,他先自己寫了東西,然后?git pull?這個時候 B 本地版本已經到3了,B 在本地版本3的時候改了 A 寫過的代碼,再進行了git commit && git push?那么在遠程版本中就是4,而且 A 的代碼被覆蓋了,所以說所有人都要先 commit 再 pull,不然真的會覆蓋代碼的

  • 6,兩個分支A和B,A合并B和B合并A,有區別嗎?

    答:兩個互相合并的唯一區別就是 A->B 的時候 B 分支上會產生一個 merge_commit ,被改變的分支是 B ;如果現在沒有發生任何改動執行 B->A ,則A和B兩分支才會完全相同。

    轉載于:https://www.cnblogs.com/leiblog/p/11138497.html

    總結

    以上是生活随笔為你收集整理的【Git版本控制】为什么要先commit,然后pull,最后再push?而不是commit然后直接push?...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。