Git學(xué)習(xí)筆記:fork和clone的區(qū)別,fetch與pull的區(qū)別

本文轉(zhuǎn)自:http://blog.sina.com.cn/s/blog_4a0824490102wf5y.html? 作者:ccpacer

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

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

問題:pull request的作用

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

所以要想將你的代碼貢獻(xiàn)到B中,我們應(yīng)該:

在A的倉庫中fork項目a (此時我們自己的github就有一個一模一樣的倉庫a,但是URL不同)

將我們修改的代碼push到自己github中的倉庫B中

pull request ,主人就會收到請求,并決定要不要接受你的代碼

也可以可以申請為項目a的contributor,這樣可以直接push

(2) fork了別人的項目到自己的repository之后,別人的項目更新了,我們fork的項目怎么更新?

答:首先fetch網(wǎng)上的更新到自己的項目上,然后再判斷、merge。這里就涉及了下一個問題,pull和fetch有啥區(qū)別。

(3)fetch+merge與pull效果一樣。但是要多用fetch+merge,這樣可以檢查fetch下來的更新是否合適。pull直接包含了這兩步操作,如果你覺得網(wǎng)上的更新沒有問題,那直接pull也是可以的。


參考文獻(xiàn):

1 http://www.tech126.com/git-fetch-pull/

2http://www.ruanyifeng.com/blog/2014/06/git_remote.html

3 https://ruby-china.org/topics/15729

4http://www.oschina.net/translate/git-fetch-and-merge

5http://www.cnblogs.com/hutaoer/archive/2013/03/14/3078869.html

==================================================

1. git fetch:相當(dāng)于是從遠(yuǎn)程獲取最新版本到本地,不會自動merge

git fetch origin master

git log -p master..origin/master

git merge origin/master

以上命令的含義:

首先從遠(yuǎn)程的origin的master主分支下載最新的版本到origin/master分支上

然后比較本地的master分支和origin/master分支的差別

最后進(jìn)行合并

上述過程其實可以用以下更清晰的方式來進(jìn)行:

git fetch origin master:tmp

git diff tmp

git merge tmp

從遠(yuǎn)程獲取最新的版本到本地的test分支上

之后再進(jìn)行比較合并

2. git pull:相當(dāng)于是從遠(yuǎn)程獲取最新版本并merge到本地

git pull origin master

上述命令其實相當(dāng)于git fetch 和 git merge

在實際使用中,git fetch更安全一些

因為在merge前,我們可以查看更新情況,然后再決定是否合并

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容