文章目錄
- 曆史(linus開挂)
- 集中式 VS 分布式
-
- 集中式
- 分布式
- battle
- 安裝
- 建立本地git倉庫
- 把本地庫傳到GitHub遠端庫中
今天終于要把一些項目搬上GitHub了,,,,拖延了一年多的計劃诶
終于要正面學習Git版本控制系統了,好激動啊
曆史(linus開挂)
2008年Github網站才上線,至今才12年呢,但是已經是妥的不能更妥的分布式開源版本管理系統,世界最流行的,沒有之一
2005年linus就寫出來了,但是08年網站才上線。當時他隻花了兩周,,就用C寫出來了Git,一個月内,Linux系統的源代碼就已經用Git來管理上了,不再用02年到05年免費讓linux開源社群使用的商業版本管理系統BitKeeper。(當時主要是因為linux社群裡有人試圖破解bitkeeper的協定,是以bitmover公司就怒了,本來就是出于人道主義精神讓你們免費用的,你們還亂七八糟搞破壞。。。于是就收回了linux社群的免費使用權。誰知道linus真是神一樣的牛人,兩周就寫出來一個Git,一個月就用上了。。。)
怎麼感覺大牛寫代碼跟玩兒似的,想寫個啥就能立刻呼呼呼寫出來
其實除了免費讓他們用得bitkeeper外,還有svs, svn等版本控制系統,但是後兩個是集中式的版本控制系統,是以linus非常不喜歡。
最早Git是在Linux上開發的,很長一段時間内,Git也隻能在Linux和Unix系統上跑。不過,慢慢地有人把它移植到了Windows上。現在,Git可以在Linux、Unix、Mac和Windows這幾大平台上正常運作了。
集中式 VS 分布式
集中式
版本庫是集中存放在中央伺服器的,而幹活的時候,用的都是自己的電腦,是以要先從中央伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給中央伺服器。中央伺服器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然後回到家自己改,改完了,再放回圖書館。
最大的毛病就是必須聯網才能工作,依賴網速
分布式
分布式版本控制系統根本沒有“中央伺服器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了檔案A,你的同僚也在他的電腦上改了檔案A,這時,你們倆之間隻需把各自的修改推送給對方,就可以互相看到對方的修改了。
在實際使用分布式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個區域網路内,兩台電腦互相通路不了,也可能今天你的同僚病了,他的電腦壓根沒有開機。是以,分布式版本控制系統通常也有一台充當“中央伺服器”的電腦,但這個伺服器的作用僅僅是用來友善“交換”大家的修改,沒有它大家也一樣幹活,隻是交換修改不友善而已。
battle
- 和集中式版本控制系統相比,分布式版本控制系統的安全性要高很多,因為每個人電腦裡都有完整的版本庫,某一個人的電腦壞掉了不要緊,随便從其他人那裡複制一個就可以了。而集中式版本控制系統的中央伺服器要是出了問題,所有人都沒法幹活了。
- Git的優勢不單是不必聯網這麼簡單,Git還有極其強大的分支管理,把SVN等遠遠抛在了後面。
CVS作為最早的開源而且免費的集中式版本控制系統,直到現在還有不少人在用。由于CVS自身設計的問題,會造成送出檔案不完整,版本庫莫名其妙損壞的情況。
同樣是開源而且免費的SVN修正了CVS的一些穩定性問題,是目前用得最多的集中式版本庫控制系統。
除了免費的外,還有收費的集中式版本控制系統,比如IBM的ClearCase(以前是Rational公司的,被IBM收購了),特點是安裝比Windows還大,運作比蝸牛還慢,能用ClearCase的一般是世界500強,他們有個共同的特點是财大氣粗,或者人傻錢多。
微軟自己也有一個集中式版本控制系統叫VSS,內建在Visual Studio中。由于其反人類的設計,連微軟自己都不好意思用了。
分布式版本控制系統除了Git以及促使Git誕生的BitKeeper外,還有類似Git的Mercurial和Bazaar等。這些分布式版本控制系統各有特點,但最快、最簡單也最流行的依然是Git
安裝
看廖雪峰老師的教程就好啦,超級簡單

因為Git是分布式版本管理系統,是以每個機器都必須自報家門:你的名字和Email位址。
$ git config --global user.name "wudidamanman"
$ git config --global user.email "[email protected]"
建立本地git倉庫
安裝的這個git bash軟體用的是bash腳本語言,是以和linux指令差不多,下面這些步驟都是用指令完成的,我按照順序寫的
- pwd指令顯示目前目錄
$ pwd
/c/Users/Administrator
- cd指令切換目錄
$ cd /f/myGithub
- mkdir 建立目錄
$ mkdir CurveOfVehicleDrivingCondition
- git init指令
建立一個本地git倉庫,這個指令執行後會在檔案夾裡有一個.git檔案,不要去修改它,不然容易出幺蛾子錯誤。
注意這裡建立的隻是本地倉庫,和GitHub沒有任何關系哦。要想用github,需要在GitHub網站上new一個repo,即庫,然後用本地的Git bash軟體連接配接到你的GitHub賬戶(需要用SSH協定,GitHub網站需要知道你的公鑰,以以确認更新的版本确實是你發的)
$ git init
Initialized empty Git repository in F:/myGithub/CurveOfVehicleDrivingCondition/.git/
- git add指令
添加檔案到本地庫。先把這些檔案放在本地的你的這個庫的路徑下,然後再用這個指令。不然git再牛逼,也找不到你的檔案到底在哪。
檔案名可以是中文哦,路徑名最好不要有中文
$ git add 工況曲線
- git commit指令
把git add指令添加的所有檔案全部送出到本地庫,即git add并沒有真正送出,是以這個指令執行速度很快的,你可以執行多條git add指令後,再寫一條git commit一次性地送出到本地庫,送出到庫需要檔案拷貝,是以檔案大則會花點時間,指令執行的就慢一點。
橫杠和m之間不要有空格,否則會報錯
把本地庫傳到GitHub遠端庫中
- 在GitHub網站新增賬號并登入
- 在git bash軟體建立SSH密鑰
[email protected]-20190617YNTF MINGW64 /f/myGithub/CurveOfVehicleDrivingCondition (master)
$ ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):
Created directory '/c/Users/Administrator/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa
Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:0U7iswV2AtIG4AsLoR1jwxwHl9tzvyi2iTuV85M/YgU [email protected].com
The key's randomart image is:
+---[RSA 3072]----+
|.oO+=+. |
|.=o*..o. . |
|+ o + * + |
|.o .. ooEO |
|. . +Soo |
| + +o |
| . o.+ . |
| ..o.B o |
| o+o+ +.. |
+----[SHA256]-----+
一路回車就好,就會在你的主目錄下生成一個.ssh檔案,裡面就是你的私鑰和公鑰
.pub的是公鑰,public嘛,注意這和publisher軟體沒啥關系,用notepad++打開觀看就好了。
-
在GitHub網站添加SSH key
就是把你的公鑰添加進去,跟着廖雪峰老師教程就好了
你要用幾個電腦就要幾個SSH公鑰哈,git才知道都是合法身份推送給他的
- 在GitHub網站建立一個庫 建庫為public就網友都可以看到
Git初識,建本地git庫,把本地庫傳到GitHub遠端庫曆史(linus開挂)集中式 VS 分布式安裝建立本地git倉庫把本地庫傳到GitHub遠端庫中 - 給GitHub的庫起個遠端名字
一般是origin,我這次叫做origi,因為我前面用origin這個名字作為一個遠端庫的名字了,再用就提示
fatal: remote origin already exists.
其實随便叫啥都行
$ git remote add origi [email protected].com:wudidamanman/Curve.git
注意要保證自己從本地的Git庫上傳到GitHub的遠端庫時,遠端庫是空的,什麼都沒有,才能傳成功。
- 把本地庫上傳到GitHub的遠端庫
哈哈,終于上傳啦
$ git push -u origi master
Warning: Permanently added the RSA host key for IP address '13.229.188.59' to the list of known hosts.
Enumerating objects: 2761, done.
Counting objects: 100% (2761/2761), done.
Delta compression using up to 6 threads
Compressing objects: 100% (2760/2760), done.
Writing objects: 100% (2761/2761), 38.41 MiB | 415.00 KiB/s, done.
Total 2761 (delta 889), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (889/889), done.
To github.com:wudidamanman/Curve.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origi'.
就可以在GitHub網站看到啦