数据科学家为什要用Git?怎么用?
也許你在別的地方聽說過Git。也許有人告訴過你,Git只適合軟件開發(fā)人員。如果你是數(shù)據(jù)科學(xué)家,那么Git其實(shí)對你很重要。本文作者希望能夠通過經(jīng)驗(yàn)分享讓你了解Git的重要性,以及如何在你的數(shù)據(jù)科學(xué)工作中使用它。
什么是Git?
Git是一個分布式版本控制系統(tǒng),用于在軟件開發(fā)期間跟蹤源代碼的更改。看看維基百科給出的這個定義,好像Git專門是為軟件開發(fā)人員而設(shè)計(jì)的。實(shí)際上,Git是當(dāng)今世界上使用最廣泛的現(xiàn)代版本控制系統(tǒng),它是以分布式的協(xié)作方式為項(xiàng)目(開源或商業(yè))做出了偉大的貢獻(xiàn)。除了分布式版本控制系統(tǒng)之外,Git的還考慮了性能、安全性和靈活性。現(xiàn)在你已經(jīng)了解了Git是什么,但是你腦海中的問題可能是,“如果我是做數(shù)據(jù)科學(xué)項(xiàng)目的人,它與我的工作有什么關(guān)系?”以前我也一樣不能理解Git的重要性,直到我開始在現(xiàn)實(shí)工作環(huán)境中,我才發(fā)現(xiàn)它時如此重要!
為什么是Git?
我們來談?wù)劄槭裁?#xff1f;一年前,我決定學(xué)習(xí)Git。我在Github上分享并發(fā)布了我的代碼,這是我在CERN的論文項(xiàng)目。雖然很難理解Git中常用的術(shù)語(git-add、commit、push、pull等),但我知道這在數(shù)據(jù)科學(xué)領(lǐng)域很重要,這使我的數(shù)據(jù)科學(xué)工作比以往任何時候都更加充實(shí)。
所以我保持學(xué)習(xí)狀態(tài),并堅(jiān)持“committing”。當(dāng)我加入我目前的公司時,我在Git方面的經(jīng)驗(yàn)就派上了用場,因?yàn)镚it是跨不同團(tuán)隊(duì)進(jìn)行代碼開發(fā)和協(xié)作的主要方式。更重要的是,當(dāng)你的組織遵循敏捷軟件開發(fā)框架時,Git尤其有用,在該框架中,Git的分布式版本控制使整個開發(fā)工作流更加高效、快速且易于適應(yīng)變化。那么什么是版本控制呢?版本控制是一個系統(tǒng)記錄一個文件或一組文件隨時間的變化,以便你以后可以調(diào)用特定的版本。比如說,你是一個數(shù)據(jù)科學(xué)家,與一個團(tuán)隊(duì)合作,在這個團(tuán)隊(duì)中你和另一個數(shù)據(jù)科學(xué)家在構(gòu)建機(jī)器學(xué)習(xí)模型的時候,對同一個特征進(jìn)行工作。如果你對該特征做了一些更改并上傳到遠(yuǎn)程存儲庫,并且這些更改與主分支合并,那么你的項(xiàng)目現(xiàn)在變成了1.1版本。另一位數(shù)據(jù)科學(xué)家也對版本1.1的相同功能進(jìn)行了一些更改,新的更改現(xiàn)在與主分支合并。模型就變成1.2版本。在任何時候,如果你的團(tuán)隊(duì)發(fā)現(xiàn)版本1.2在發(fā)布期間有一些錯誤,他們隨時可以調(diào)用以前的版本1.1,這就是版本控制的美妙之處。
作為數(shù)據(jù)科學(xué)家如何使用Git?
我們已經(jīng)討論過什么是Git及其重要性。現(xiàn)在的問題歸結(jié)為:作為數(shù)據(jù)科學(xué)家如何使用Git?作為數(shù)據(jù)科學(xué)家,你不需要成為一個Git領(lǐng)域的專家。關(guān)鍵是要理解Git技術(shù)的工作流程以及如何在日常工作中使用Git。準(zhǔn)確地說,我在這里使用的是Git?Feature Branch?Workflow,它通常被開源和商業(yè)項(xiàng)目使用。如果你想更多地了解這里使用的術(shù)語,點(diǎn)擊這里進(jìn)行了解。
Git?Feature Branch?Workflow
Feature Branch?Workflow像一個中央存儲庫,master分支代表正式的項(xiàng)目歷史記錄。開發(fā)人員每次開始處理一個新特性時,都會創(chuàng)建一個新的分支,而不是直接提交到他們的本地主分支上。新的分支可以(也應(yīng)該)推送到中央存儲庫。在這種情況下,可以在不修改master分支的情況下與其他開發(fā)人員共享一個該分支。
在開始執(zhí)行任何操作之前,請鍵入
<span style="color:#f8f8f2"><code class="language-none">git remote -v</code></span>以確保工作區(qū)指向要使用的遠(yuǎn)程存儲庫。
?
1、從主分支開始,創(chuàng)建一個新分支
<span style="color:#f8f8f2"><code class="language-none">git checkout master git pull git checkout -b branch-name</code></span>如果總是維護(hù)和更新主分支,則切換到本地主分支,并將最新的提交和代碼提取到本地主分支。假設(shè)你希望創(chuàng)建一個本地分支,向代碼中添加一個新功能,并稍后上傳到遠(yuǎn)程存儲庫。一旦你將最新的代碼更新到本地master分支,我們就創(chuàng)建并checkout出一個名為branch-name的新分支,所有的更改都將在此本地分支上進(jìn)行。這意味著你本地的master分支不會受到任何影響。
2、更新、添加、提交并將更改推送到遠(yuǎn)程存儲庫
<span style="color:#f8f8f2"><code class="language-none">git status git add <your-files> git commit -m 'your message' git push -u origin branch-name </code></span>上面我們做了很多操作,讓我們詳細(xì)了解它。一旦發(fā)生了一些更新,就將新的操作add到本地分支,并且希望將該操作上傳到遠(yuǎn)程分支,以便合并到遠(yuǎn)程主分支。git?status將輸出你對文件的所有更改(跟蹤或未跟蹤)。在使用git?commit-m“your message”提交消息更改之前,你將使用git?add?<your files>決定要暫存哪些文件。
在此階段,你的更改僅顯示在本地分支中。為了使你的更改顯示在BitBucket上的遠(yuǎn)程分支中,你需要使用git?push -u origin branch-name命令進(jìn)行提交。此命令將該分支推送到中央存儲庫,并且-u表示將其添加為遠(yuǎn)程跟蹤分支。在設(shè)置了跟蹤分支之后,可以在沒有任何參數(shù)的情況下調(diào)用git?push,以自動將新的功能分支推送到BitBucket上的中央存儲庫。
3、創(chuàng)建pull請求
現(xiàn)在你已經(jīng)成功地添加了一個新功能并推送到遠(yuǎn)程分支。你為自己的貢獻(xiàn)感到驕傲,你希望在將遠(yuǎn)程分支與遠(yuǎn)程主分支合并之前得到團(tuán)隊(duì)成員的反饋。在該分支合并到主分支之前,讓其他團(tuán)隊(duì)成員有機(jī)會對其進(jìn)行審查。你可以在BitBucket上創(chuàng)建pull請求。現(xiàn)在,你的團(tuán)隊(duì)成員已經(jīng)查看了你的代碼,并決定在代碼可以合并到主代碼庫-master分支之前,需要你進(jìn)行一些其他更改。
<span style="color:#f8f8f2"><code class="language-none">git status git add <your-files> git commit -m 'your message' git push </code></span>現(xiàn)在,你可以按照與之前相同的步驟進(jìn)行更改、提交并最終將更新推送到中央存儲庫。一旦使用了git?push,你的更新將自動顯示在pull請求中。如果其他人已將目標(biāo)更改為你所接觸的同一代碼,則會發(fā)生合并沖突,這在工作中很常見。你可以在這里看到如何解決合并沖突。一旦一切順利完成,這些功能將會合并到master分支中。
當(dāng)我第一次開始學(xué)習(xí)Git時,我感到非常沮喪,因?yàn)槲胰匀粵]有真正理解工作流。這也是寫這篇文章的主要原因之一,它真正分解并在更高層次的理解上向你解釋工作流程。因?yàn)槲蚁嘈?#xff0c;對工作流程中發(fā)生的事情有一個清晰的了解將使學(xué)習(xí)過程更加有效。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的数据科学家为什要用Git?怎么用?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云原生数据库如何打造业务弹性
- 下一篇: 阿里云发布迁移解决方案,“迁移上云”这件