週末,我正在家裏看《最強大腦》,女友在一旁刷手機,相安無事。誰知道,剛過了沒多久,她忽然問我:git
想要介紹什麼是GitHub,就要介紹下什麼是Git,想要介紹什麼是Git,那就不得不提版本控制。
程序員
咱們知道,若是多臺計算機在同一個局域網中,是能夠進行局域網文件共享的。共享者能夠經過設置把本身文件共享給他人進行閱讀和修改。github
對於同一份共享文件,若是又多我的須要修改的話會發生什麼事情呢?假設如今有三我的,A分享了文件夾mhcoding,其中包含了三個文件mhcoding1.png,mhcoding2.png,mhcoding3.png,B和C須要對這份文件進行修改。數據庫
B和C分別把mhcoding文件夾拷貝到本身的電腦上,而後進行修改,改完以後須要再把本身修改上傳上去。B先改完了以後把本身的文件上傳上去,覆蓋了A的分享。以後C也改完了,也把本身的改動上傳上去。這樣,C就會把B的修改覆蓋掉。編程
爲了上述這種問題,就須要經過一種方式來在C想要上傳文件的時候來提醒他,告訴他須要考慮到B已經改過文件的事情。服務器
比較好的方式就是經過版本控制。編程語言
若是使用了版本控制系統,每個團隊成員均可以在任什麼時候間對任何文件毫無顧慮的進行修改,版本控制系統能夠提醒咱們文件修改衝突,甚至能夠幫咱們自動把多我的的改動合併到一塊兒。分佈式
有了版本控制,咱們還能夠回溯查看之前某一個版本中具體文件的內容,還能夠查看某一次改動的變動內容。很是適合團隊協做。工具
本地版本控制系統 網站
許多人習慣用複製整個項目目錄的方式來保存不一樣的版本,或許還會更名加上備份時間以示區別。這麼作惟一的好處就是簡單。不過壞處也很多:有時候會混淆所在的工做目錄,一旦弄錯文件丟了數據就無法撤銷恢復。
這類系統,都有一個單一的集中管理的服務器,保存全部文件的修訂版本,而協同工做的人們都經過客戶端連到這臺服務器,取出最新的文件或者提交更新。
分佈式版本控制系統
集中化最顯而易見的缺點是中央服務器的單點問題。若是中央服務器宕機一小時,那麼在這一小時內,誰都沒法提交更新,也就沒法協同工做。
要是中央服務器的磁盤發生故障,碰巧沒作備份,或者備份不夠及時,就會有丟失數據的風險。
因而分佈式版本控制系統面世了。在這類系統中,客戶端並不僅提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。這麼一來,任何一處協同工做用的服務器發生故障,過後均可以用任何一個鏡像出來的本地倉庫恢復。由於每一次的提取操做,實際上都是一次對代碼倉庫的完整備份。
git其實就是一款咱們前面介紹的分佈式版本控制軟件,Git具備如下特色:
直接記錄快照,而非差別比較
近乎全部操做都是本地執行
時刻保持數據完整性
多數操做僅添加數據
GitHub是一個面向開源及私有軟件項目的託管平臺,由於只支持git 做爲惟一的版本庫格式進行託管,故名GitHub。
GitHub是經過Git進行版本控制的軟件源代碼託管服務,而且,GitHub還引入了一些社交屬性。號稱是世界上最大的程序員(同性)交友網站。
最近比較火的996icu項目咱們說他有10多萬的Star,就是說由10W+的人關注了這個項目。
Dress - 女裝大佬彙集地
有129名貢獻者在這個名爲Dress的項目裏集結,上傳了數千張女裝照,收穫了8000餘顆星。
Thanos - 滅霸命令
Thanos.sh是一個開源的個滅霸命令,可隨機刪除電腦上一半文件。
nocode - 一行代碼都沒有
這是一個Issue比項目更精彩的項目,項目中一行代碼都沒有,Issue中各類裝逼。
想問下,Star這個項目的2.7萬人是有多無聊???
programmer-job-blacklist 碼農找工做黑名單
hangzhou_house_knowledge 杭州買房攻略
howmanypeoplearearound 經過 Wi-Fi 信號估計附近有多少人