數據科學家為什要用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 Workflow

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

在開始執行任何操作之前,請鍵入

git remote -v

以確保工作區指向要使用的遠程存儲庫。1、從主分支開始,創建一個新分支

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

如果總是維護和更新主分支,則切換到本地主分支,並將最新的提交和代碼提取到本地主分支。假設你希望創建一個本地分支,向代碼中添加一個新功能,並稍後上傳到遠程存儲庫。一旦你將最新的代碼更新到本地master分支,我們就創建並checkout出一個名為branch-name的新分支,所有的更改都將在此本地分支上進行。這意味著你本地的master分支不會受到任何影響。

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

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上的中央存儲庫。

3、創建pull請求

現在你已經成功地添加了一個新功能並推送到遠程分支。你為自己的貢獻感到驕傲,你希望在將遠程分支與遠程主分支合併之前得到團隊成員的反饋。在該分支合併到主分支之前,讓其他團隊成員有機會對其進行審查。你可以在BitBucket上創建pull請求。現在,你的團隊成員已經查看了你的代碼,並決定在代碼可以合併到主代碼庫-master分支之前,需要你進行一些其他更改。

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

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

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

作者:【方向】

相關推薦

推薦中...