Git學習筆記:fork和clone的區別,fetch與pull的區別


 本文轉自:http://blog.sina.com.cn/s/blog_4a0824490102wf5y.html  作者:ccpacer

fork:在github頁面,點擊fork按鈕。將別人的倉庫復制一份到自己的倉庫。

clone:將github中的倉庫克隆到自己本地電腦中

 

問題:pull request的作用

比如在倉庫的主人(A)沒有把我們添加為項目合作者的前提下,我們將A的某個倉庫名為“a”的倉庫clone到自己的電腦中,在自己的電腦進行修改,但是我們會發現我們沒辦法通過push將代碼貢獻到B中。

 

所以要想將你的代碼貢獻到B中,我們應該:

  1. 在A的倉庫中fork項目a (此時我們自己的github就有一個一模一樣的倉庫a,但是URL不同)
  2. 將我們修改的代碼push到自己github中的倉庫B中
  3. pull request ,主人就會收到請求,並決定要不要接受你的代碼
  4. 也可以可以申請為項目a的contributor,這樣可以直接push
(2) fork了別人的項目到自己的repository之后,別人的項目更新了,我們fork的項目怎么更新?
答:首先fetch網上的更新到自己的項目上,然后再判斷、merge。這里就涉及了下一個問題,pull和fetch有啥區別。
 
(3)fetch+merge與pull效果一樣。但是要多用fetch+merge,這樣可以檢查fetch下來的更新是否合適。pull直接包含了這兩步操作,如果你覺得網上的更新沒有問題,那直接pull也是可以的。
 
參考文獻:
1 http://www.tech126.com/git-fetch-pull/
3 https://ruby-china.org/topics/15729
 
==================================================

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

    
    從遠程獲取最新的版本到本地的test分支上
   之后再進行比較合並

2. git pull:相當於是從遠程獲取最新版本並merge到本地
   
git pull origin master

    上述命令其實相當於git fetch 和 git merge
    在實際使用中,git fetch更安全一些
   因為在merge前,我們可以查看更新情況,然后再決定是否合並


免責聲明!

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



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