文章目錄
一、Git 的誕生
在1991年,大佬 Linus 構建了開源操作系統,並命名爲 Linux,隨後帶領全世界計算機愛好者逐漸完善系統 。這個系統可能有人陌生,有人熟系。Linux 幾乎滲透到我們生活的方方面面,比如是大部分網站應用數據與服務的載體。包括手機的 Android 系統,車載系統,智能終端等等也是基於Linux內核完成。
Linux 在開發伊始,Linux 開源社區的人們通過將源代碼文件通過 diff 的方式發送給 Linus 大佬,然後 Linus 使用多年的功力手工將這些代碼整合到 Linus。但是,隨着社區提供的代碼越來越多,Linus 也扛不住了。
這時候,就需要一款工具可以將不同人,不同來源的代碼整合到軟件的主代碼中。而且可以對源代碼修改,刪除等等改動一一記錄,方便後續的調試和整合。這樣做既可以提高工作效率,方便調試,同時也避免了人爲錯誤導致軟件的不穩定。總之,這款工具的使用對 Linux 的發展必不可少。
及時雨來自商業版本控制系統 BitKeeper,它向 Linus拋出了橄欖枝,允許 Linux 開發社區免費使用。但是,問題在於社區裏都是計算機技術狂熱者,這相當於給了餓了幾天的人一個包子,說你不能喫肉餡,只能喫皮。於是,有人對這個控制系統產生了想法,Samba(Linux的文件共享和打印機通信協議)的開發者 Andrew 開始嘗試破解 BitKeeper,嚐嚐肉餡是什麼味。好景不長,BitKeeper 的開發公司 BitMover 發現了社區有人在破解他們的軟件,而且還不止 Andrew 一人,於是公司看透了這羣"綠林好漢",在2005年 BitKeeper 收回了 Linux 社區的免費使用權。
沒有了免費的版本控制系統,日子還得過,Linux 的代碼量還在與日俱增,Linux 社區要給商業軟件低頭了嗎?
事實是,並沒有。
2005 年,Linus 爲了解決這一問題,他自己花了兩週時間開發了一個分佈式版本控制系統 Git,你沒有看錯是兩週時間,大佬的世界我不懂。
一個月後,Git 完成 Linux 系統源碼接管任務,隨後 Git 迅速在開源社區間流行。
二、GitHub 的出生
Git 可以在本地執行,但是這只是你一個人在玩代碼。如果你想通過 Git 分享你的代碼或者與其他開發人員合作。 你就需要將數據放到一臺其他開發人員能夠連接的服務器上。
2008年, GitHub 應運而生,它爲每個人提供了遠程倉庫,並且提供了相應的社區化服務。
GitHub的上線爲開源項目提供了立足之地,我們熟系的 JQuery,PHP 等開源項目開始從獨立的社區遷移到 GitHub。而正如 Apache 開源基金會所提倡的先社區而後代碼,一個強有力的社區能使一款有潛力的軟件持續的向好發展。
其實,我們現在看生信文獻的時候,只有涉及到生信軟件發佈,數據流程處理,在線軟件等等與編程相關的上線項目都會首先發布在GitHub,並提供 GitHub 克隆地址。
2018年,微軟宣佈以 75 億美元收購 GitHub。
2019年,GitHub 宣佈開發者可以免費最多四人協作的私人倉庫。這一權限的開放,使得我們大部分的實驗人員都可以更好的加入 GitHub 社區,完成多人協作任務。
歷史的拐點就是這麼神奇,如果沒有 Andrew 的破解,BitKeeper的憤怒,Linus 也不會創造出 Git,也更不會有現在免費的 GitHub。
三、GitHub和Git 對我們來說有什麼用?
從上面的故事可以看出,Git 和 GitHub 要解決的是多人協作完成不同地點,不同時間提交源碼並整合到最終項目的問題。總結下:
- 版本管理:通過使用快照等方式,可以將你的代碼修改可以提交到 Git 庫。只要提交,全部的數據就會被記錄一個版本,而且Git很難執行不可逆操作,這就意味着只要提交,數據想丟都難。
- 協同修改:多人並行不悖的修改服務器端的同一個文件,數據備份
- 文件狀態:不僅保存目錄和文件的當前狀態, 還能夠保存每一個提交過的歷史狀態,很讚的功能就是,可以將歷史代碼回溯到某個時間點的狀態。
- 權限控制:團隊中每個人對文件具有不同權限,也可以接受非團隊合併源碼
- 分支管理:將不同來源,功能整合與主要代碼中,允許開發團隊在工作過程中多條生產線同時推進任務, 進一步提高效率
- 分佈式:同一個Git倉庫,可以分佈到不同的機器上,這就意味着代碼可以在雲端和本地都有一套完整的倉庫,除了離線使用的便利,提高了執行速度,多個拷貝也提高了數據安全性。
接下來我們完成 Git,GitHub 在 Pycharm 的安裝:
四、安裝 Git
CentOS
sudo yum install git-all
git --version
Ubuntu
sudo apt-get install git
Windows
五、本地 Git 關聯 GitHub 遠程倉庫
1.生成祕鑰
ssh-keygen -t rsa -C "[email protected]"
- 第一步確定祕鑰生成目錄,直接回車
- 第二三步輸入密碼
- 祕鑰生成後,進入祕鑰目錄,比如我的爲
/c/Users/baimo/.ssh/id_rsa
,複製備用
2.進入 GitHub https://www.github.com,打開設置
3.新建一個 SSH key
4.填寫 SSH key
5.新建 GitHub 倉庫
6.填寫信息,創建 GitHub 倉庫
7.完成後你的倉庫後,類似這樣,紅框爲 git 地址
8.將 GitHub 倉庫與我們本地的 Git 倉庫進行關聯
git remote add origin https://github.com/qqdb/example01.git
origin 後的 url 就是 GitHub 倉庫地址,在上一步中獲取
9.將本地 Git 倉庫提交到 GitHub 遠程倉庫
第一次提交:
git push -u origin master
之後提交
git push origin master
如果報錯:
解決:
git push -f origin master
這是一種強制上傳方案,第一次可以使用,今後不建議使用。因爲這條命令會直接覆蓋遠程倉庫的版本信息。
六、推送本地倉庫到 GitHub
1.進入設置
2.登錄 GitHub 賬號
3.配置 Git
4.使用
5.配置
6.上傳,這裏一般會全部上傳到GitHub,如果有大文件可以考慮取消勾選。
7.上傳成功
七、將 GitHub 倉庫克隆到本地
1.進入配置
2.克隆項目
克隆自己的項目
克隆大佬的項目
完成後會有讀條
2.從 Pycharm 中查看 Github
3.一般的 Git 操作
八、參與 GitHub 項目
1.Fork 一個項目
Fork
是GitHub存儲庫的副本,可在不影響原始項目的情況下更改代碼。
比如,https://github.com/scikit-learn/scikit-learn
2.進入 Pycharm 的版本控制界面
3.克隆大佬項目
等進度條跑完
我們會得到項目的倉庫
6.查看項目參與者的操作日誌
7.項目參與者創建pull
請求
填寫pull
請求
項目的維護者管理pull
請求
查看pull
請求信息
Git 和 GitHub 的使用方法遠遠不止這些,更多技巧稍後更新。