英文原文:[http://www.dataschool.io/simple-guide-to-forks-in-github-and-git/]
英文作者: Kevin Markham
中文:[https://linux.cn/article-4292-1.html]
譯者: su-kaiyao
以我的經(jīng)驗(yàn)來看夺克,剛接觸Git和GitHub時(shí)浓瞪,最困擾的一件事情就是嘗試解決下面的問題:在Git和GitHub上,我能做什么台谊?
Git教程往往不會(huì)解決這個(gè)問題,因?yàn)樗衅鶃斫棠鉍it命令和概念砸泛,并且不認(rèn)為你會(huì)使用GitHub耕腾。GitHub幫助教程一定程度上彌補(bǔ)了這一缺陷,但是它每篇文章的關(guān)注點(diǎn)都較為狹隘蓬衡,而且沒有提供關(guān)于"Git vs GitHub"問題的概念性概述喻杈。
如果你是習(xí)慣于先理解概念彤枢,再著手代碼的學(xué)習(xí)者,而且你也是Git和GitHub的初學(xué)者奕塑,我建議你先理解清楚什么是fork堂污。為什么呢 ?
Fork是在GitHub起步最普遍的方式龄砰。
Fork只需要很少的Git命令盟猖,但是起得作用卻非常大。
Fork提供了對(duì)Git和GitHub最基礎(chǔ)的了解换棚,有益于你之后的工作式镐。
本篇指南使用兩張簡(jiǎn)單的圖表,來教會(huì)你fork的兩種主要工作流程固蚤。我并不打算涉及任何代碼娘汞,但是在結(jié)論中,我會(huì)把你需要使用的代碼的鏈接給你夕玩。
fork并且更新一個(gè)倉庫
現(xiàn)在有這樣一種情形:有一個(gè)叫做Joe的程序猿寫了一個(gè)游戲程序你弦,而你可能要去改進(jìn)它。并且Joe將他的代碼放在了GitHub倉庫上燎孟。下面是你要做的事情:
Alt text
fork并且更新GitHub倉庫的圖表演示
Fork他的倉庫:這是GitHub操作禽作,這個(gè)操作會(huì)復(fù)制Joe的倉庫(包括文件,提交歷史揩页,issues旷偿,和其余一些東西)。復(fù)制后的倉庫在你自己的GitHub帳號(hào)下爆侣。目前萍程,你本地計(jì)算機(jī)對(duì)這個(gè)倉庫沒有任何操作。
Clone你的倉庫:這是Git操作兔仰。使用該操作讓你發(fā)送"請(qǐng)給我發(fā)一份我倉庫的復(fù)制文件"的命令給GitHub∶8海現(xiàn)在這個(gè)倉庫就會(huì)存儲(chǔ)在你本地計(jì)算機(jī)上。
更新某些文件:現(xiàn)在斋陪,你可以在任何程序或者環(huán)境下更新倉庫里的文件朽褪。
提交你的更改:這是Git操作。使用該操作讓你發(fā)送"記錄我的更改"的命令至GitHub无虚。此操作只在你的本地計(jì)算機(jī)上完成缔赠。
將你的更改push到你的GitHub倉庫:這是Git操作。使用該操作讓你發(fā)送"這是我的修改"的信息給GitHub友题。Push操作不會(huì)自動(dòng)完成嗤堰,所以直到你做了push操作,GitHub才知道你的提交。
給Joe發(fā)送一個(gè)pull request:如果你認(rèn)為Joe會(huì)接受你的修改踢匣,你就可以給他發(fā)送一個(gè)pull request告匠。這是GitHub操作,使用此操作可以幫助你和Joe交流你的修改离唬,并且詢問Joe是否愿意接受你的"pull request"后专,當(dāng)然,接不接受完全取決于他自己输莺。
如果Joe接受了你的pull request戚哎,他將把那些修改拉到自己的倉庫。勝利嫂用!
同步一個(gè)fork
Joe和其余貢獻(xiàn)者已經(jīng)對(duì)這個(gè)項(xiàng)目做了一些修改型凳,而你將在他們的修改的基礎(chǔ)上,還要再做一些修改嘱函。在你開始之前甘畅,你最好"同步你的fork",以確保在最新的復(fù)制版本里工作往弓。下面是你要做的:
同步GitHub fork的圖表示意圖
從Joe的倉庫中取出那些變化的文件:這是Git操作硅卢,使用該命令讓你可以從Joe的倉庫獲取最新的文件洽胶。
將這些修改合并到你自己的倉庫:這是Git操作履肃,使用該命令使得那些修改更新到你的本地計(jì)算機(jī)(那些修改暫時(shí)存放在一個(gè)"分支"中)谋梭。記酌弁小:步驟1和2經(jīng)常結(jié)合為一個(gè)命令使用谱秽,合并后的Git命令叫做"pull"敢订。
將那些修改更新推送到你的GitHub倉庫(可選):記住响巢,你本地計(jì)算機(jī)不會(huì)自動(dòng)更新你的GitHub倉庫泄朴。所以重抖,唯一更新GitHub倉庫的辦法就是將那些修改推送上去。你可以在步驟2完成后立即執(zhí)行push祖灰,也可以等到你做了自己的一些修改钟沛,并已經(jīng)本地提交后再執(zhí)行推送操作。
比較一下fork和同步工作流程的區(qū)別:當(dāng)你最初fork一個(gè)倉庫的時(shí)候局扶,信息的流向是從Joe的倉庫到你的倉庫恨统,然后再到你本地計(jì)算機(jī)。但是最初的過程之后三妈,信息的流向是從Joe的倉庫到你的本地計(jì)算機(jī)畜埋,之后再到你的倉庫。
結(jié)論
我希望這是一篇關(guān)于GitHub和Git 的 fork有用概述〕肫眩現(xiàn)在悠鞍,你已經(jīng)理解了那些概念,你將會(huì)更容易地在實(shí)際中執(zhí)行你的代碼模燥。GitHub關(guān)于fork和同步的文章將會(huì)給你大部分你需要的代碼咖祭。
如果你是Git的初學(xué)者掩宜,而且你很喜歡這種學(xué)習(xí)方式,那么我極力推薦書籍Pro Git的前兩個(gè)章節(jié)么翰,網(wǎng)上是可以免費(fèi)查閱的牺汤。
如果你喜歡視頻學(xué)習(xí),我創(chuàng)建了一個(gè)11部分的視頻系列(總共36分鐘)浩嫌,來向初學(xué)者介紹Git和GitHub檐迟。
via: http://www.dataschool.io/simple-guide-to-forks-in-github-and-git/
作者:Kevin Markham 譯者:su-kaiyao 校對(duì):wxy
本文由 LCTT 原創(chuàng)翻譯,Linux中國 榮譽(yù)推出