Linux中國

在Github和Git上fork之簡單指南

本篇指南使用兩張簡單的圖表,來教會你fork的兩種主要工作流程。我並不打算涉及任何代碼,但是在結論中,我會把你需要使用的代碼的鏈接給你。

fork並且更新一個倉庫

現在有這樣一種情形:有一個叫做Joe的程序猿寫了一個遊戲程序,而你可能要去改進它。並且Joe將他的代碼放在了GitHub倉庫上。下面是你要做的事情:

Alt text

fork並且更新GitHub倉庫的圖表演示

  1. Fork他的倉庫:這是GitHub操作,這個操作會複製Joe的倉庫(包括文件,提交歷史,issues,和其餘一些東西)。複製後的倉庫在你自己的GitHub帳號下。目前,你本地計算機對這個倉庫沒有任何操作。
  2. Clone你的倉庫:這是Git操作。使用該操作讓你發送"請給我發一份我倉庫的複製文件"的命令給GitHub。現在這個倉庫就會存儲在你本地計算機上。
  3. 更新某些文件:現在,你可以在任何程序或者環境下更新倉庫里的文件。
  4. 提交你的更改:這是Git操作。使用該操作讓你發送"記錄我的更改"的命令至GitHub。此操作只在你的本地計算機上完成。
  5. 將你的更改push到你的GitHub倉庫:這是Git操作。使用該操作讓你發送"這是我的修改"的信息給GitHub。Push操作不會自動完成,所以直到你做了push操作,GitHub才知道你的提交。
  6. 給Joe發送一個pull request:如果你認為Joe會接受你的修改,你就可以給他發送一個pull request。這是GitHub操作,使用此操作可以幫助你和Joe交流你的修改,並且詢問Joe是否願意接受你的"pull request",當然,接不接受完全取決於他自己。

如果Joe接受了你的pull request,他將把那些修改拉到自己的倉庫。勝利!

同步一個fork

Joe和其餘貢獻者已經對這個項目做了一些修改,而你將在他們的修改的基礎上,還要再做一些修改。在你開始之前,你最好"同步你的fork",以確保在最新的複製版本里工作。下面是你要做的:

Alt text

同步GitHub fork的圖表示意圖

  1. 從Joe的倉庫中取出那些變化的文件:這是Git操作,使用該命令讓你可以從Joe的倉庫獲取最新的文件。
  2. 將這些修改合併到你自己的倉庫:這是Git操作,使用該命令使得那些修改更新到你的本地計算機(那些修改暫時存放在一個"分支"中)。記住:步驟1和2經常結合為一個命令使用,合併後的Git命令叫做"pull"。
  3. 將那些修改更新推送到你的GitHub倉庫(可選):記住,你本地計算機不會自動更新你的GitHub倉庫。所以,唯一更新GitHub倉庫的辦法就是將那些修改推送上去。你可以在步驟2完成後立即執行push,也可以等到你做了自己的一些修改,並已經本地提交後再執行推送操作。

比較一下fork和同步工作流程的區別:當你最初fork一個倉庫的時候,信息的流向是從Joe的倉庫到你的倉庫,然後再到你本地計算機。但是最初的過程之後,信息的流向是從Joe的倉庫到你的本地計算機,之後再到你的倉庫。

結論

我希望這是一篇關於GitHub和Git 的 fork有用概述。現在,你已經理解了那些概念,你將會更容易地在實際中執行你的代碼。GitHub關於fork和同步的文章將會給你大部分你需要的代碼。

如果你是Git的初學者,而且你很喜歡這種學習方式,那麼我極力推薦書籍Pro Git的前兩個章節,網上是可以免費查閱的。

如果你喜歡視頻學習,我創建了一個11部分的視頻系列(總共36分鐘),來向初學者介紹Git和GitHub。

via: http://www.dataschool.io/simple-guide-to-forks-in-github-and-git/

作者:Kevin Markham 譯者:su-kaiyao 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。