天天看點

Git初識,建本地git庫,把本地庫傳到GitHub遠端庫曆史(linus開挂)集中式 VS 分布式安裝建立本地git倉庫把本地庫傳到GitHub遠端庫中

文章目錄

  • 曆史(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初識,建本地git庫,把本地庫傳到GitHub遠端庫曆史(linus開挂)集中式 VS 分布式安裝建立本地git倉庫把本地庫傳到GitHub遠端庫中

因為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檔案,裡面就是你的私鑰和公鑰

Git初識,建本地git庫,把本地庫傳到GitHub遠端庫曆史(linus開挂)集中式 VS 分布式安裝建立本地git倉庫把本地庫傳到GitHub遠端庫中

.pub的是公鑰,public嘛,注意這和publisher軟體沒啥關系,用notepad++打開觀看就好了。

  • 在GitHub網站添加SSH key

    就是把你的公鑰添加進去,跟着廖雪峰老師教程就好了

你要用幾個電腦就要幾個SSH公鑰哈,git才知道都是合法身份推送給他的

  • 在GitHub網站建立一個庫
    Git初識,建本地git庫,把本地庫傳到GitHub遠端庫曆史(linus開挂)集中式 VS 分布式安裝建立本地git倉庫把本地庫傳到GitHub遠端庫中
    建庫為public就網友都可以看到
  • 給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網站看到啦

Git初識,建本地git庫,把本地庫傳到GitHub遠端庫曆史(linus開挂)集中式 VS 分布式安裝建立本地git倉庫把本地庫傳到GitHub遠端庫中