週末,我正在家裡看《最強大腦》,女朋友在一旁刷手機,相安無事。誰知道,剛過了沒多久,她突然問我:
想要介紹什麼是GitHub,就要介紹下什麼是Git,想要介紹什麼是Git,那就不得不提版本控制。
我們知道,如果多臺計算機在同一個區域網中,是可以進行區域網檔案共享的。共享者可以通過設定把自己檔案共享給他人進行閱讀和修改。
對於同一份共享檔案,如果又多個人需要修改的話會發生什麼事情呢?假設現在有三個人,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 訊號估計附近有多少人