?在IDE中玩轉(zhuǎn) GitHub(圖文詳解)


說到 GitHub 就不得不提 Git,它的誕生也頗具傳奇色彩。
在1991年,大佬 Linus 構(gòu)建了開源操作系統(tǒng),并命名為 Linux,隨后帶領(lǐng)全世界計算機(jī)愛好者逐漸完善該系統(tǒng) 。相對我們熟悉的Windows系統(tǒng),這個名叫 Linux 的操作系統(tǒng)同樣滲透到我們生活的方方面面,比如是大部分網(wǎng)站應(yīng)用數(shù)據(jù)與服務(wù)的系統(tǒng)載體。包括手機(jī)的 Android 系統(tǒng),車載系統(tǒng),智能終端等等也是基于Linux內(nèi)核完成。
Linux 在開發(fā)伊始,Linux 開源社區(qū)的人們通過將源代碼文件通過 diff 的方式發(fā)送給 Linus 大佬,然后 Linus 使用多年的功力手工將這些代碼整合到 Linus。但是,隨著社區(qū)提供的代碼越來越多,Linus 也扛不住了。
這時候,就需要一款工具可以將不同人,不同來源的代碼整合到軟件的主代碼中。而且可以對源代碼修改,刪除等等改動一一記錄,方便后續(xù)的調(diào)試和整合。這樣做既可以提高工作效率,方便調(diào)試,同時也避免了人為錯誤導(dǎo)致軟件的不穩(wěn)定??傊?,這款工具的使用對 Linux 的發(fā)展必不可少。
及時雨來自商業(yè)版本控制系統(tǒng) BitKeeper,它向 Linus拋出了橄欖枝,允許 Linux 開發(fā)社區(qū)免費(fèi)使用。但是,問題在于社區(qū)里都是計算機(jī)技術(shù)狂熱者,這相當(dāng)于給了餓了幾天的人一個包子,說你不能吃肉餡,只能吃皮。于是,有人對這個控制系統(tǒng)產(chǎn)生了想法,Samba(Linux的文件共享和打印機(jī)通信協(xié)議)的開發(fā)者 Andrew 開始嘗試破解 BitKeeper,嘗嘗肉餡是什么味。好景不長,BitKeeper 的開發(fā)公司 BitMover 發(fā)現(xiàn)了社區(qū)有人在破解他們的軟件,而且還不止 Andrew 一人,于是公司看透了這群"綠林好漢",在2005年 BitKeeper 收回了 Linux 社區(qū)的免費(fèi)使用權(quán)。
沒有了免費(fèi)的版本控制系統(tǒng),日子還得過,Linux 的代碼量還在與日俱增,Linux 社區(qū)要給商業(yè)軟件低頭了嗎?

事實(shí)是,并沒有。
2005 年,Linus 為了解決這一問題,他自己花了兩周時間開發(fā)了一個分布式版本控制系統(tǒng) Git,你沒有看錯是兩周時間,大佬的世界我不懂。
一個月后,Git 完成 Linux 系統(tǒng)源碼接管任務(wù),隨后 Git 迅速在開源社區(qū)間流行。

Git 可以在本地執(zhí)行,但是這只是你一個人在玩代碼。如果你想通過 Git 分享你的代碼或者與其他開發(fā)人員合作。你就需要將數(shù)據(jù)放到一臺其他開發(fā)人員能夠連接的服務(wù)器上。
2008年, GitHub 應(yīng)運(yùn)而生,它為每個人提供了遠(yuǎn)程倉庫,并且提供了相應(yīng)的社區(qū)化服務(wù)。?
GitHub的上線為開源項目提供了立足之地,我們熟系的 JQuery,PHP 等開源項目開始從獨(dú)立的社區(qū)遷移到 GitHub。而 正如 Apache 開源基金會所提倡的先社區(qū)而后代碼,一個強(qiáng)有力的社區(qū)能使一款有潛力的軟件持續(xù)的向好發(fā)展。?
其實(shí),我們現(xiàn)在看生信文獻(xiàn)的時候,只有涉及到生信軟件發(fā)布,數(shù)據(jù)流程處理,在線軟件等等與編程相關(guān)的上線項目都會首先發(fā)布在GitHub,并提供 GitHub 克隆地址。
2018年,微軟宣布以 75 億美元收購 GitHub。
2019年,GitHub 宣布開發(fā)者可以免費(fèi)最多四人協(xié)作的私人倉庫。這一權(quán)限的開放,使得我們大部分的實(shí)驗人員都可以更好的加入 GitHub 社區(qū),完成多人協(xié)作任務(wù)。
歷史的拐點(diǎn)就是這么神奇,如果沒有 Andrew 的破解,BitKeeper的憤怒,Linus 也不會創(chuàng)造出 Git,也更不會有現(xiàn)在免費(fèi)的 GitHub。


從上面的故事可以看出,Git 和 GitHub 要解決的是多人協(xié)作完成不同地點(diǎn),不同時間提交源碼并整合到最終項目的問題。總結(jié)下:
版本管理:通過使用快照等方式,可以將你的代碼修改可以提交到 Git 庫。只要提交,全部的數(shù)據(jù)就會被記錄一個版本,而且Git很難執(zhí)行不可逆操作,這就意味著只要提交,數(shù)據(jù)想丟都難。
協(xié)同修改:多人并行不悖的修改服務(wù)器端的同一個文件,數(shù)據(jù)備份?
文件狀態(tài):不僅保存目錄和文件的當(dāng)前狀態(tài), 還能夠保存每一個提交過的歷史狀態(tài),很贊的功能就是,可以將歷史代碼回溯到某個時間點(diǎn)的狀態(tài)。
權(quán)限控制:團(tuán)隊中每個人對文件具有不同權(quán)限,也可以接受非團(tuán)隊合并源碼
分支管理:將不同來源,功能整合與主要代碼中,允許開發(fā)團(tuán)隊在工作過程中多條生產(chǎn)線同時推進(jìn)任務(wù), 進(jìn)一步提高效率?
分布式:同一個Git倉庫,可以分布到不同的機(jī)器上,這就意味著代碼可以在云端和本地都有一套完整的倉庫,除了離線使用的便利,提高了執(zhí)行速度,多個拷貝也提高了數(shù)據(jù)安全性。
接下來我們完成 Git,GitHub 在 Pycharm 的安裝:

CentOS
sudo yum install git-all
git --version

Ubuntu
sudo apt-get install gitWindows
https://git-scm.com/downloads


1.生成秘鑰
ssh-keygen -t rsa -C "[email protected]"第一步確定秘鑰生成目錄,直接回車
第二三步輸入密碼
秘鑰生成后,進(jìn)入秘鑰目錄,比如我的為
/c/Users/baimo/.ssh/id_rsa,復(fù)制備用

2.進(jìn)入GitHub?,打開設(shè)置
?
3.新建一個 SSH key?

4.填寫 SSH key?
5.新建 GitHub 倉庫
?
6.填寫信息,創(chuàng)建 GitHub 倉庫
?
7.完成后你的倉庫后,類似這樣,紅框為 git 地址?
8.將 GitHub 倉庫與我們本地的 Git 倉庫進(jìn)行關(guān)聯(lián)
git remote add origin https://github.com/qqdb/example01.gitorigin 后的 url 就是 GitHub 倉庫地址,在上一步中獲取
9.將本地 Git 倉庫提交到 GitHub 遠(yuǎn)程倉庫
第一次提交:
git push -u origin master之后提交
git push origin master如果報錯:?
解決:
git push -f origin master這是一種強(qiáng)制上傳方案,第一次可以使用,今后不建議使用。因為這條命令會直接覆蓋遠(yuǎn)程倉庫的版本信息。

1.進(jìn)入設(shè)置

2.登錄 GitHub 賬號

3.配置 Git?

4.使用?

5.配置?

6. 上傳,這里一般會全部上傳到GitHub,如果有大文件可以考慮取消勾選。

7.上傳成功?

1.進(jìn)入配置?

2.克隆項目

克隆大佬的項目?

完成后會有讀條?

2.從 Pycharm 中查看 Github?
?
3.一般的 Git 操作?


1.Fork 一個項目
Fork是GitHub存儲庫的副本,可在不影響原始項目的情況下更改代碼。
比如,https://github.com/scikit-learn/scikit-learn?

2.進(jìn)入 Pycharm 的版本控制界面?

3.克隆大佬項目?

等進(jìn)度條跑完?

我們會得到項目的倉庫?

6.查看項目參與者的操作日志?

7.項目參與者創(chuàng)建pull請求?

填寫pull請求?

項目的維護(hù)者管理pull請求?

查看pull請求信息?

Git 和 GitHub 的使用方法遠(yuǎn)遠(yuǎn)不止這些,更多技巧稍后更新。

