數據科學家爲什要用Git?怎麼用?

也許你在別的地方據說過Git。也許有人告訴過你,Git只適合軟件開發人員。若是你是數據科學家,那麼Git其實對你很重要。本文做者但願可以經過經驗分享讓你瞭解Git的重要性,以及如何在你的數據科學工做中使用它。git

什麼是Git安全

Git是一個分佈式版本控制系統,用於在軟件開發期間跟蹤源代碼的更改。看看維基百科給出的這個定義,好像Git專門是爲軟件開發人員而設計的。實際上,Git是當今世界上使用最普遍的現代版本控制系統,它是以分佈式的協做方式爲項目(開源或商業)作出了偉大的貢獻。除了分佈式版本控制系統以外,Git的還考慮了性能、安全性和靈活性。如今你已經瞭解了Git是什麼,可是你腦海中的問題多是,「若是我是作數據科學項目的人,它與個人工做有什麼關係?」之前我也同樣不能理解Git的重要性,直到我開始在現實工做環境中,我才發現它時如此重要!併發

爲何是Git框架

咱們來談談爲何?一年前,我決定學習Git。我在Github上分享併發布了個人代碼,這是我在CERN的論文項目。雖然很難理解Git中經常使用的術語(git-add、commit、push、pull等),但我知道這在數據科學領域很重要,這使個人數據科學工做比以往任什麼時候候都更加充實。機器學習

因此我保持學習狀態,並堅持「committing」。當我加入我目前的公司時,我在Git方面的經驗就派上了用場,由於Git是跨不一樣團隊進行代碼開發和協做的主要方式。更重要的是,當你的組織遵循敏捷軟件開發框架時,Git尤爲有用,在該框架中,Git的分佈式版本控制使整個開發工做流更加高效、快速且易於適應變化。那麼什麼是版本控制呢?版本控制是一個系統記錄一個文件或一組文件隨時間的變化,以便你之後能夠調用特定的版本。好比說,你是一個數據科學家,與一個團隊合做,在這個團隊中你和另外一個數據科學家在構建機器學習模型的時候,對同一個特徵進行工做。若是你對該特徵作了一些更改並上傳到遠程存儲庫,而且這些更改與主分支合併,那麼你的項目如今變成了1.1版本。另外一位數據科學家也對版本1.1的相同功能進行了一些更改,新的更改如今與主分支合併。模型就變成1.2版本。在任什麼時候候,若是你的團隊發現版本1.2在發佈期間有一些錯誤,他們隨時能夠調用之前的版本1.1,這就是版本控制的美妙之處。分佈式

做爲數據科學家如何使用Git性能

咱們已經討論過什麼是Git及其重要性。如今的問題歸結爲:做爲數據科學家如何使用Git?做爲數據科學家,你不須要成爲一個Git領域的專家。關鍵是要理解Git技術的工做流程以及如何在平常工做中使用Git。準確地說,我在這裏使用的是Git Feature Branch Workflow,它一般被開源和商業項目使用。若是你想更多地瞭解這裏使用的術語。學習

Git Feature Branch Workflowspa

Feature Branch Workflow像一箇中央存儲庫,master分支表明正式的項目歷史記錄。開發人員每次開始處理一個新特性時,都會建立一個新的分支,而不是直接提交到他們的本地主分支上。新的分支能夠(也應該)推送到中央存儲庫。在這種狀況下,能夠在不修改master分支的狀況下與其餘開發人員共享一個該分支。設計

在開始執行任何操做以前,請鍵入

git remote -v

以確保工做區指向要使用的遠程存儲庫。

 

一、從主分支開始,建立一個新分支

git checkout master git pull git checkout -b branch-name

若是老是維護和更新主分支,則切換到本地主分支,並將最新的提交和代碼提取到本地主分支。假設你但願建立一個本地分支,向代碼中添加一個新功能,並稍後上傳到遠程存儲庫。一旦你將最新的代碼更新到本地master分支,咱們就建立並checkout出一個名爲branch-name的新分支,全部的更改都將在此本地分支上進行。這意味着你本地的master分支不會受到任何影響。

二、更新、添加、提交併將更改推送到遠程存儲庫

git status git add <your-files> git commit -m 'your message' git push -u origin branch-name

上面咱們作了不少操做,讓咱們詳細瞭解它。一旦發生了一些更新,就將新的操做add到本地分支,而且但願將該操做上傳到遠程分支,以便合併到遠程主分支。git status將輸出你對文件的全部更改(跟蹤或未跟蹤)。在使用git commit-m「your message」提交消息更改以前,你將使用git add <your files>決定要暫存哪些文件。

在此階段,你的更改僅顯示在本地分支中。爲了使你的更改顯示在BitBucket上的遠程分支中,你須要使用git push -u origin branch-name命令進行提交。此命令將該分支推送到中央存儲庫,而且-u表示將其添加爲遠程跟蹤分支。在設置了跟蹤分支以後,能夠在沒有任何參數的狀況下調用git push,以自動將新的功能分支推送到BitBucket上的中央存儲庫。

三、建立pull請求

如今你已經成功地添加了一個新功能並推送到遠程分支。你爲本身的貢獻感到驕傲,你但願在將遠程分支與遠程主分支合併以前獲得團隊成員的反饋。在該分支合併到主分支以前,讓其餘團隊成員有機會對其進行審查。你能夠在BitBucket上建立pull請求。如今,你的團隊成員已經查看了你的代碼,並決定在代碼能夠合併到主代碼庫-master分支以前,須要你進行一些其餘更改。

git status git add <your-files> git commit -m 'your message' git push

如今,你能夠按照與以前相同的步驟進行更改、提交併最終將更新推送到中央存儲庫。一旦使用了git push,你的更新將自動顯示在pull請求中。若是其餘人已將目標更改成你所接觸的同一代碼,則會發生合併衝突,這在工做中很常見。一旦一切順利完成,這些功能將會合併到master分支中。

當我第一次開始學習Git時,我感到很是沮喪,由於我仍然沒有真正理解工做流。這也是寫這篇文章的主要緣由之一,它真正分解並在更高層次的理解上向你解釋工做流程。由於我相信,對工做流程中發生的事情有一個清晰的瞭解將使學習過程更加有效。


原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索