一文總結GitHub使用指南

總覽python

  • Git和GitHub是任何想要編程的數據科學專業人員的必備工具
  • 在此面向初學者的綜合指南中,能夠了解到Git和GitHub的相關內容和意義
    介紹
    「一我的能作的事情不多,但咱們一塊兒,就能夠作不少事情。」 ——海倫·凱勒
    據說過版本控制嗎?當我開始編程時,我還沒據說過這個工具。尤爲是在爲各類數據科學任務編寫代碼時頭暈目眩,那時尚未意識到編寫高效代碼的重要性以及管理整個代碼庫的必要性。直到進入這個行業時,才明白版本控制的重要性。
    我學到的第一件事是清楚了Git和GitHub的意義。雖然一直很瞭解它們(常用它們來克隆Google Research和其餘頂級數據科學組織的開源代碼),但從未真正理解它們的真正用途。
    一文總結GitHub使用指南
    版本控制之美對我來講是一個啓示。我能夠建立一個遠程項目,讓我全部的團隊成員同時獨立地處理不一樣的功能,但在一天結束時仍然有一個穩定的運行代碼,這種方式讓我着迷。瞬間,我發現了一個解決在協做項目時曾經面臨的問題的靈丹妙藥。
    我很是高興與你分享這篇有關Git和GitHub的文章。咱們將介紹這兩種工具的工做方式以及如何使用它們使你的數據科學項目更容易跟蹤
    做爲數據科學家,你須要對這些工具備紮實的瞭解。你不只會面臨有關此問題的面試問題,並且你將在數據科學領域中很是依賴Git和GitHub。
    若是你正在與一個項目的其餘數據科學家合做(這種狀況常常發生),那麼有時你必須更新一段代碼或一個功能。Git和GitHub將在這裏幫助你建立更好的工做流程。不管你進行什麼更改,你均可以輕鬆地將其提供給全部協做者。若是你輸入有誤,也能夠隨時回到之前的版本
    目錄
  • 什麼是Git?
  • 什麼是GitHub?
  • 熟悉Git術語
  • Git入門
  • 初始化存儲庫
  • 配置Git
  • 瞭解如何在Git中提交文件
  • 查看日誌
  • 在GitHub上上傳到遠程存儲庫
  • 將Git遠程添加到你的存儲庫
  • 使用Push
  • 克隆GitHub存儲庫
  • 分支與合併
  • v使用Pull
  • 爲世界貢獻力量
  • 尾註
    讓咱們深刻了解Git和GitHub的世界!
    什麼是Git?
    Git(https://git-scm.com/) 是一種普遍使用的版本控制系統(Version Control System ,VCS),可以讓你跟蹤對代碼所作的全部修改。這意味着,若是新功能引發了任何錯誤,均可以輕鬆回到之前的版本。
    可是Git不僅是VCS,它仍是分佈式VCS。這意味着項目的每一個協做者都將擁有在本地計算機上所作更改的歷史記錄,所以人們能夠處理項目的不一樣功能,而沒必要與託管該項目的遠程版本服務器進行通訊。你能夠輕鬆地將對項目所作的任何更改與遠程副本合併,這將大大提升工做效率。
    因爲它是用C語言編寫的,因此速度和性能從一開始就在Git中根深蒂固。除此以外,在實際保存對項目的任何更改以前,Git還提供了大量緩存區。
    若是你想了解更多有關Git的信息,請訪問其官方網站(https://git-scm.com/about/branching-and-merging) ,找到問題的答案!
    什麼是GitHub?
    GitHub(https://github.com/) 是一個普遍使用的版本控制平臺,其核心是Git,它使你能夠託管項目的遠程版本,全部協做者均可以從中訪問它。不只你本身的團隊成員,並且GitHub的任何成員均可覺得你的代碼作出貢獻(固然,若是你選擇接受所作的更改)。咱們將在本文中詳細討論這些。
    GitHub就像一個社交平臺,你能夠在其中找到大量帶有其代碼的開源項目。在該平臺上能夠找到全部新興技術。你能夠在驚人的項目上進行合做,並就本身的貢獻進行討論!這將是你找到的最佳開源平臺,也是數據科學家的夢想!
    你能夠在GitHub看看咱們最好的開源數據科學項目,每個月都收集在這裏:
  • https://www.analyticsvidhya.com/blog/tag/github-repositories
    在GitHub上能夠作不少事情,讓咱們開始吧。
    熟悉Git術語
    存儲庫(Repository)
    一文總結GitHub使用指南
    Repository或Repo是一個文件夾,其中包含全部項目文件和每一個文件所作的修訂歷史。在項目的整個生命週期中,將使用項目的兩個存儲庫:遠程存儲庫和本地存儲庫:
  • 遠程存儲庫包含你的項目,任何人從任何地方均可以訪問它。你的遠程存儲庫位於GitHub服務器上,任何人均可以訪問它們
  • 本地存儲庫是駐留在本地計算機上的遠程存儲庫的副本。你所作的全部更改將保存在本地存儲庫中。除非你將它們推送到遠程存儲庫,不然你的同伴開發人員將沒法看到它們
    克隆(Cloning)
    git clone < Repo-URL >
    克隆意味着在本地計算機上建立遠程存儲庫的副本。如今,你能夠在本地計算機上對項目進行更改。
    提交(Commit)
    git commit -m 「< commit message >」
    提交更改時,將對文件所作的更改保存在repo中。在本地計算機上使用Git時,使用commit命令會將文件保存在本地存儲庫中,要在遠程存儲庫中進行這些更改,你可使用push命令。
    推送(Push)
    git push origin < branch >
    Push命令容許你將本地存儲庫上的全部更改傳輸到遠程存儲庫上。傳輸以後,全部其餘開發人員均可以訪問你所作的更改,而且他們能夠更新其本地存儲庫。
    拉取(Pull)
    git pull < remote-repo >
    若是push意味着將代碼傳輸到遠程存儲庫,則Pull命令容許你將全部更改從遠程存儲庫傳輸到本地存儲庫。所以,開發人員將其推送到遠程存儲庫的任何更改,均可以使用pull命令將其轉移到本地存儲庫中。
    你還須要瞭解一些術語,但如今不須要。咱們將在本文的後半部分詳細介紹它們。如今,讓咱們建立咱們的第一個GitHub存儲庫!
    Git入門
    你應該作的第一件事是在系統上下載Git。對已經準備好的人表示敬意!其餘人,請轉到此處(https://git-scm.com/downloads) 爲你的操做系統下載Git。這很簡單,你能夠很快完成。
    如今,Git程序旨在與Unix風格的命令行環境一塊兒使用。Linux和macOS已經在其本地命令行終端中爲此提供了一個接口。所以,我在本文中使用的全部git命令均可以在其終端上正常工做。
    可是,Windows具備徹底不一樣的命令行界面,稱爲命令提示符,它不是Unix風格的命令行環境,那麼咱們該怎麼辦?不用擔憂,你在安裝Git時已經安裝了Git Bash。
    Git Bash是Windows的命令行界面,能夠模擬Git命令行,所以只要你在Git Bash中實現Git命令,就能夠了。
    我將交替使用術語「終端」或「命令行」來指代macOS和Linux用戶的命令行環境,以及Windows用戶的Git Bash。
    我要你作的下一件事是建立一個項目文件夾,你將在其中保存本地存儲庫,而後按照如下步驟在該項目文件夾中打開終端:
  • 打開終端或Git Bash
  • 鍵入命令cd,這意味着更改目錄(或文件夾)
  • 導航到項目文件夾所在的位置,但不要打開它
  • 如今,只需將文件夾拖放到終端內便可,這會將終端導航到你的項目目錄/工做目錄
    一文總結GitHub使用指南
    準備好開始使用Git!
    初始化存儲庫
    存儲庫或存儲庫是一個文件夾,其中包含全部項目文件和對每一個文件進行的修訂。你在上面建立的項目目錄不是存儲庫,一個存儲庫須要使用git init命令(https://git-scm.com/docs/git-init) 初始化。
    一文總結GitHub使用指南
    完成此操做後,將在項目/工做存儲庫中建立一個隱藏的.git文件夾,這是你本地的Git存儲庫。若是看不到它,多是由於它是隱藏的,你須要更改設置中的某些屬性以使其可見,可是也不用擔憂,即便你沒有看到它,它仍然存在。Git會將你對項目文件所作的全部更改存儲在此文件夾中。
    一文總結GitHub使用指南
    配置Git
    可是在咱們對存儲庫進行任何更改以前,咱們但願Git知道咱們是誰。咱們可使用git config命令來作到這一點。使用此設置,咱們能夠設置用戶名和用戶電子郵件地址。如今,每次咱們提交時,Git都會保存此信息,以便你知道誰進行了更改。
    git config — global user.name
    git config — global user.email
    一文總結GitHub使用指南
    若是使用–global選項,則Git將爲系統中的全部存儲庫保存此信息,若是隻但願爲該特定存儲庫保存信息,則能夠將其省略。
    瞭解如何在Git中提交文件
    如今,你能夠開始構建項目並將文件添加到項目目錄。個人項目是用不一樣的編程語言編寫「 Hello world」,所以我將爲此目的在個人項目目錄中添加一些文件,你也應該對項目目錄執行相同的操做,由於它如今爲空。
    建立文件並將其添加到項目目錄後,你可使用git add <file-name>將它們添加到本地Git存儲庫中。
    一文總結GitHub使用指南
    若是要一次添加多個文件,請使用git add。
    一文總結GitHub使用指南
    咱們完成了嗎?提交更改的命令不是用別的命令嗎?
    你是絕對正確的!咱們還沒有將文件添加到本地存儲庫。咱們剛剛告訴Git,已經進行了一些更改,咱們但願將這些更改保存在下一次提交/保存中,到目前爲止,這些「added」文件位於一個名爲「 暫存區」的位置。
    暫存區是工做目錄和本地repo之間的一箇中間位置,在將所作的任何更改提交到repo以前,均可以在這裏進行檢查。
    一文總結GitHub使用指南
    你可使用git status檢查臨時區域的狀態
    一文總結GitHub使用指南
    你將看到與上面顯示的消息類似的消息,該消息告訴你所作的更改須要提交,此處將顯示全部掛起的提交。
    如今,你能夠對你所作的全部更改(這些更改反映在暫存區中)進行快照,並使用Git commit-m「<commit message>」將它們保存在Git repo中
    你的提交消息應該簡潔明瞭,這樣其餘開發人員就能夠輕鬆地肯定你爲何要進行這種更改。
    一文總結GitHub使用指南
    完成後,你將收到如下消息:
    一文總結GitHub使用指南
    如今,全部文件都已提交到Git存儲庫中。你能夠檢查暫存區的狀態,這一次它將反映沒有要提交的內容:
    一文總結GitHub使用指南
    此後,每當你對任何文件(如錯誤修復程序或其餘任何文件)進行更改並將其添加到暫存區時,Git將知道對哪些文件進行了更改,並將在提交中記錄文件的所有內容。
    我將對個人一個代碼文件進行一些更改,並在更改後提交:
    一文總結GitHub使用指南
    一文總結GitHub使用指南

如你所見,當我再次添加文件時,Git很是聰明,知道我只對單個文件進行了更改,這反映在其輸出中。在此以後我所作的提交僅更新了該特定文件,而沒有更新其餘文件。
查看日誌
版本控制的重點是保留所作更改的記錄,你可使用git log命令(https://git-scm.com/docs/git-log) 執行此操做,它爲你提供了按時間順序進行的全部提交的完整視圖:
一文總結GitHub使用指南
如你所見,個人姓名,電子郵件地址,時間戳和提交消息都反映在日誌中,這使得跟蹤誰進行了哪些更改以及肯定bug什麼時候首次引入到項目中變得至關容易。
在GitHub上上傳到遠程存儲庫
到目前爲止,咱們都還在本地存儲庫上工做,這意味着所作的全部更改都已在你的本地計算機上進行了跟蹤,而咱們的開發人員目前還看不到它們,爲此你須要建立一個遠程存儲庫——一個任何地方任何人均可以訪問的存儲庫,這就是GitHub的用武之地!
你的遠程存儲庫位於GitHub服務器上,任何人均可以訪問它,所以讓咱們建立一個遠程存儲庫!
注意:你須要爲此建立一個GitHub賬戶。
建立遠程存儲庫的步驟
在右上角,單擊+號,而後單擊新建存儲庫:
一文總結GitHub使用指南
在下一頁上,爲你的存儲庫命名並提供簡短描述,完成後,點擊建立存儲庫:
一文總結GitHub使用指南
太棒了!你剛剛建立了第一個遠程存儲庫。
GitHub在2019年1月向我的免費提供了私有存儲庫。在2020年4月,GitHub對全部人(包括組織)免費提供了私有存儲庫。
將Git遠程添加到你的存儲庫
建立GitHub存儲庫後,GitHub將提示你將文件上傳到遠程存儲庫:
一文總結GitHub使用指南
因爲咱們已經建立了本地存儲庫,所以首先須要同步本地和遠程存儲庫。咱們可使用git remote add origin <URL>來作到這一點
一文總結GitHub使用指南
該命令在本地和遠程存儲庫之間建立鏈接。一旦這樣作,咱們就再也不須要每次都經過URL引用遠程存儲庫,咱們可使用名稱origin來引用遠程存儲庫。
使用Push
如今已經添加了遠程存儲庫,你所要作的就是將你的提交從本地存儲庫推送到遠程存儲庫,以便全部開發人員均可以查看更改。
你可使用git push -u origin <branch-name>將本地存儲庫轉移到GitHub服務器上的遠程存儲庫
一文總結GitHub使用指南
Origin是咱們的遠程存儲庫的名稱。
如今,咱們全部的合做者均可以訪問此新更新的存儲庫。
一文總結GitHub使用指南
克隆GitHub存儲庫
咱們知道了如何建立本身的本地存儲庫並將其推送到GitHub上。如今,若是你不是建立此存儲庫的人,則必須在本地計算機上覆制此存儲庫。
將項目上載到遠程存儲庫後,開發人員可使用git clone命令(https://git-scm.com/docs/git-clone) 得到此存儲庫的副本,而後開發人員能夠處理其本地存儲庫副本,對其進行更改,而後將其上傳到遠程存儲庫上。
從GitHub克隆遠程存儲庫很容易,只需轉到要克隆的存儲庫,而後單擊「克隆」或「下載」按鈕便可複製URL:
一文總結GitHub使用指南
你也能夠直接今後處以Zip文件的形式下載存儲庫,可是咱們將使用Git從咱們的終端下載它。
要將其克隆到本地計算機,你須要轉到終端並在如下命令中提供URL
git clone < URL >
這將在本地計算機上製做該存儲庫的本地副本。
一文總結GitHub使用指南
你會注意到,在當前目錄內建立了一個與遠程存儲庫同名的文件夾,該文件夾是你的項目/工做目錄,其中包含本地Git存儲庫,你須要在此目錄中導航以更改本地存儲庫。
使用cd <存儲庫名稱> /在你的工做目錄中導航:
一文總結GitHub使用指南
如今你已經在工做目錄中,能夠進行所需的任何更改。若是你喜歡這些更改並認爲它將解決一個錯誤或爲該項目添加一個很是酷的功能,則只需先提交你的本地存儲庫,而後將其推送到GitHub上的遠程存儲庫,以使你的開發人員能夠及時瞭解最新信息、新的變化。
分支與合併
分支是Git的最基本特徵之一。分支使你能夠處理master分支上存在的主要項目代碼的新功能或錯誤修復。
一文總結GitHub使用指南
分支就像對提交的引用。你能夠對分支進行任何更改,即便你搞砸了這一分支,也請放心,由於它不會損害你的實際工做代碼。
分支使你能夠試驗新功能或新想法,甚至能夠並行建立多個分支以試驗不一樣功能。任何數量的人均可以在特定分支上工做,而且你能夠根據須要擁有任意數量的分支。
你可使用git branch建立一個新分支,這將包含master分支中存在的全部文件,你也能夠在此分支上更改文件。一旦確信代碼運行良好,就可使用git merge命令(https://git-scm.com/docs/git-merge) 將其與master分支集成。
一文總結GitHub使用指南
到目前爲止,咱們一直在master分支上工做。如今,咱們將看到如何使用git branch <branch-name>建立一個新分支。
一文總結GitHub使用指南
這將建立一個新分支,你可使用git branch命令檢查:
一文總結GitHub使用指南
Git將始終經過在每一個命令的括號中提到它來更新你正在處理的分支,這能夠確保你在正確的分支上工做。
如今讓咱們使用git checkout <branch-name>在另外一個分支中工做
一文總結GitHub使用指南
如今,我正在循環分支中工做,我想經過在個人代碼中添加一個for循環來更改存儲庫中的文件之一,而後提交更改:
一文總結GitHub使用指南
完成以後,讓我回到主分支並檢查所作的更改:
一文總結GitHub使用指南
這是怎麼回事?我所作的更改未反映在master分支中!這正是應該發生的狀況。進行提交時,我位於循環分支內,所以所作的更改保存在該特定分支中,所以更改未提交給master分支,個人master分支上的代碼仍是安全的。
接下來,若是我想將這些更改提交到master分支,由於它沒有任何錯誤,並且我喜歡新的「循環」功能,則可使用 git merge <branch name> -m 「<message>」命令從要將其合併到的分支上(在本例中是主分支)執行此操做,這將使循環分支與主分支合併:
一文總結GitHub使用指南
太棒了!咱們在主代碼中添加了功能齊全的新功能,如今剩下要作的就是將這些更改提交到遠程存儲庫!
使用Pull
你須要知道的最後一個Git命令是pull,這使你能夠從遠程存儲庫中獲取任何更新,並將其與本地存儲庫合併。例如,克隆了遠程存儲庫後,有人在某個分支上對遠程存儲庫進行了更新,如今你須要獲取這些更改並與本地存儲庫合併,以便你能夠及時瞭解這個新的更改。
假設我在Python代碼文件中添加了for循環以後,有人在Java代碼文件中添加了for循環,由於個人代碼文件沒有for循環:
一文總結GitHub使用指南
我可使用pull命令更新本地存儲庫。你所要作的就是鍵入git pull origin <branch-name>
一文總結GitHub使用指南
這將更新個人本地存儲庫,如今在個人Java文件中也有一個for循環!
一文總結GitHub使用指南
爲世界貢獻力量
使用GitHub,你能夠瀏覽任何人的存儲庫,想必那就是開源之美吧! 有時候,你會真正喜歡某我的的項目,而且很想爲該項目作出貢獻,或者若是你想建議某人的項目最好進行某些修復,而後發送請求,以便你能夠爲他們的項目作出貢獻。
這能夠經過稱爲fork的過程來實現。
一文總結GitHub使用指南
fork某人的存儲庫,請轉到存儲庫頁面,而後在頂部單擊Fork,這將在你的賬戶中建立存儲庫的副本。
我已經fork了Analytics Vidhya的Data Science Hacks存儲庫(https://github.com/kunalj101/Data-Science-Hacks) ,對於須要提升效率的全部數據科學家來講,這是一個很好的存儲庫!
如今,你能夠將此存儲庫克隆到本地計算機上,進行所需的更改或要添加的功能,而後將其推送到遠程副本。
最後,你能夠請求項目的建立者接受所作的修復或添加的新功能,這稱爲拉取請求(pull request)。
當你瀏覽到配置文件中的存儲庫時,你將看到一個名爲「 New pull request 」 的選項:
一文總結GitHub使用指南
單擊該按鈕,GitHub將帶你進入下一頁,該頁面將顯示你但願原始建立者合併的分支:
一文總結GitHub使用指南
建立拉取請求後,系統將提示你定義對原始建立者的存儲庫所作的更改,你能夠根據須要對所作的更改提供儘量多的描述,最後發送拉取請求。
如今原始創做者們要麼接受你的更改,而後將其與分支合併,在這種狀況下,祝賀你剛剛作出了開源貢獻,你應該爲本身感到驕傲!可是,即便沒有,也不要傷心欲絕。還有許多其餘開放源代碼項目正在等待你的關注,所以繼續前進,繼續作出貢獻!
若是你想爲開源項目作貢獻,但又不知道從哪裏開始,則能夠從我爲本文建立的存儲庫開始——「Hello-world」(https://github.com/aniruddha27/Hello-world) 。克隆它,對其進行更改,而後發送拉取請求,我會接受全部人的!讓咱們一站式學習每種編程語言!
尾註
在這裏,咱們確實講了不少內容,若是你耐心地實現了本文中我所作的一切,請給本身一個鼓勵,這是你應得的!
但這只是冰山一角。Git和GitHub比我在本文中介紹的內容要多得多。若是你想繼續對存儲庫進行探索和貢獻,我建議你閱讀下文,其中列出了一些最具創新性的機器學習GitHub項目。git

相關文章
相關標籤/搜索