什么是git舟肉?
這里有個(gè)故事
從前有個(gè)人叫Linus Benedict Torvalds,在上大學(xué)為了方便和讀寫和下載某些東西查库,順手編寫了了磁盤驅(qū)動(dòng)程序和文件系統(tǒng)路媚,結(jié)果這后來便是linux內(nèi)核的雛形。隨著時(shí)間的推移樊销,linux系統(tǒng)的不斷壯大和完善整慎,Linus Benedict Torvalds發(fā)現(xiàn)代碼太多了,怎么越來越不好管理围苫,最后便創(chuàng)立了git.
所以git就是個(gè)軟件(一般來說是分布式版本控制系統(tǒng))
所以git實(shí)際上就是用來管理linux代碼的一個(gè)軟件(其實(shí)就是個(gè)軟件)裤园,后來人們發(fā)現(xiàn),這軟件非常好用剂府,不僅僅是用來管理linux代碼拧揽,管理其他項(xiàng)目也很好用.于是github就出現(xiàn)了
那什么是github呢?
這里有個(gè)介紹
github是一家公司,一家利用分布式版本控制系統(tǒng)(git)而建立的一個(gè)公司(平臺(tái)).不僅自身盈利巨大淤袜,吸引著名投資公司投資痒谴,也服務(wù)了世界,方便了無數(shù)開發(fā)人員等.
所以github就是個(gè)公司铡羡,其實(shí)也是一個(gè)巨大的git系統(tǒng)(對(duì)我們來說是個(gè)很好用的工具)
那具體對(duì)于我們有什么好用的呢积蔚?為何要使用git呢?
這里有個(gè)故事
雖然Linus Benedict Torvalds開放了系統(tǒng)的源代碼烦周,也有無數(shù)志愿愛好者的幫助尽爆,但linux的管理更新壯大過程卻十分繁瑣,因?yàn)槭鞘澜绺鞯氐膼酆谜邔⒋a發(fā)給linus读慎,linus最后進(jìn)行手工代碼合并漱贱。一開始還好,可以管理贪壳,隨著linux的不斷壯大饱亿,不僅linus忙不過來蚜退,世界各地的linux愛好者也不滿意了闰靴,“我去年就修改了代碼發(fā)給你了,怎么還沒修復(fù)钻注?”怎么系統(tǒng)還沒改蚂且?“這個(gè)時(shí)候就linus就很愁了。這個(gè)時(shí)候怎么辦呢幅恋?git系統(tǒng)也就應(yīng)運(yùn)而生了(Linus之前還選擇了一個(gè)商業(yè)的版本控制系統(tǒng)BitKeeper)為了方便管理杏死,linus創(chuàng)立的git是分布式版本控制系統(tǒng)
比起之前l(fā)inus的管理方式,來對(duì)比看看這種管理方式有什么優(yōu)點(diǎn)呢?
linus之前的管理方式:
linux的源代碼是集中存放在中央服務(wù)器的捆交,而干活的時(shí)候淑翼,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本品追,然后開始干活玄括,干完活了,再把自己的活推送給中央服務(wù)器肉瓦。中央服務(wù)器就好比是一個(gè)圖書館遭京,你要改一本書,必須先從圖書館借出來泞莉,然后回到家自己改哪雕,改完了,再放回圖書館鲫趁。
git的分布式版本控制系統(tǒng):
方便性:
分布式版本控制系統(tǒng)根本沒有“中央服務(wù)器”斯嚎,每個(gè)人的電腦上都是一個(gè)完整的版本庫,這樣,你工作的時(shí)候孝扛,就不需要聯(lián)網(wǎng)了列吼,因?yàn)榘姹編炀驮谀阕约旱碾娔X上。既然每個(gè)人電腦上都有一個(gè)完整的版本庫苦始,那多個(gè)人如何協(xié)作呢寞钥?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A陌选,這時(shí)理郑,你們倆之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了咨油。
安全性:
因?yàn)槊總€(gè)人電腦里都有完整的版本庫您炉,某一個(gè)人的電腦壞掉了不要緊,隨便從其他人那里復(fù)制一個(gè)就可以了役电。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問題赚爵,所有人都沒法干活了。
一般實(shí)際使用情況:
其實(shí)很少在兩人之間的電腦上推送版本庫的修改法瑟,因?yàn)榭赡苣銈儌z不在一個(gè)局域網(wǎng)內(nèi)冀膝,兩臺(tái)電腦互相訪問不了,也可能今天你的同事病了霎挟,他的電腦壓根沒有開機(jī)窝剖。因此,分布式版本控制系統(tǒng)通常也有一臺(tái)充當(dāng)“中央服務(wù)器”的電腦酥夭,但這個(gè)服務(wù)器的作用僅僅是用來方便“交換”大家的修改赐纱,沒有它大家也一樣干活,只是交換修改不方便而已熬北。
那git和github怎么用呢疙描?
既然git是個(gè)軟件,那肯定要安裝吧.那怎么安裝呢讶隐?
(git最初是用于管理linux代碼起胰,所以和linux相性非常好,所以就先講講在linux系統(tǒng)上的使用.)
1.git的安裝
先打開終端整份,然后輸入git
看系統(tǒng)是否安裝
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
這就很明確的告訴你輸入sudo apt-get install git
就可以安裝git了
安裝完git后才是第一步待错,既然知道了git的系統(tǒng)結(jié)構(gòu),那第二步肯定是在本地建個(gè)倉庫烈评,在鏈接到遠(yuǎn)程倉庫(或者先建立遠(yuǎn)程倉庫火俄,在克隆到本地)這兩種都行,下面都講讲冠,但我習(xí)慣先建立本地庫瓜客,有本地才有遠(yuǎn)端
2.創(chuàng)建個(gè)本地倉庫(版本庫,本地文件夾,)
打開終端谱仪,輸入代碼
mkdir 文件名(新建文件夾)
$ cd 文件名(打開文件夾)
git init
隨后出現(xiàn)結(jié)果
$ git init
Initialized empty Git repository in /Users/michael/文件名/.git/
這個(gè)時(shí)候版本庫就建立完畢了
3.把文件添加到版本庫
1.先把要提交的文件放到目錄下(子目錄也行)玻熙,因?yàn)檫@是一個(gè)Git倉庫,放到其他地方Git再厲害也找不到這個(gè)文件疯攒。git add 文件名(比如learn.txt)
沒有任何消息嗦随,說明執(zhí)行成功,沒有消息就是好消息
2.git commit -m“first commit”
簡單解釋一下git commit
命令敬尺,-m
后面輸入的是本次提交的說明枚尼,可以輸入任意內(nèi)容,當(dāng)然最好是有意義的砂吞,這樣你就能從歷史記錄里方便地找到改動(dòng)記錄署恍。
這個(gè)時(shí)候你就會(huì)發(fā)現(xiàn),提交一個(gè)文件版本庫需要兩步
add
和commit
蜻直,哪為啥需要兩步呢盯质?難道不能一步就提交嗎?因?yàn)閏ommit可以一次提交很多文件概而,所以你可以多次add不同的文件呼巷,比如:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
3.git remote add origin https://github.com/ranzhouhang/ranzhouhang-task62-homework1.git
這里的origin是倉庫的名字(默認(rèn)),后面網(wǎng)址的是遠(yuǎn)端倉庫的地址(這一步有點(diǎn)早了到腥,還需先建立遠(yuǎn)端倉庫)
4.建立遠(yuǎn)程倉庫
首先朵逝,登陸GitHub蔚袍,然后乡范,在右上角找到“Create a new repo”按鈕,創(chuàng)建一個(gè)新的倉庫:
(根據(jù)網(wǎng)站按鈕走過程吧啤咽,注冊(cè)登錄然后建倉庫)等圖床工具好了再弄點(diǎn)圖片吧
5.有關(guān)git的基礎(chǔ)操作
除了最基本的提交和和遠(yuǎn)程端同步晋辆,我們還會(huì)遇到:萬一忘記提交沒有提交了咋辦?git還是很周到的宇整,我們可以用git status
查看倉庫當(dāng)前狀態(tài)瓶佳。比如:
$ git status
# On branch master
# Changes not staged for commit:
.........................
.........................
no changes added to commit (use "git add" and/or "git commit -a")
這個(gè)時(shí)候就說明某些文件被改了,但卻沒有上傳
那能不能看看具體修改了那些內(nèi)容呢鳞青?
git diff
輸入git diff空格+文件名
知道做了修改內(nèi)容后就可以用git add
和git commit -m
進(jìn)行提交了.
好啦霸饲,萬一提交完之后,突然發(fā)現(xiàn)沒改之前的更好用臂拓,怎么辦厚脉?可以退回嗎?
用git log
可以查看提交的次數(shù)和版本號(hào)胶惰,知道版本號(hào)和次數(shù)后傻工,就可以版本回退啦。在Git中,用HEAD表示當(dāng)前版本中捆,上一個(gè)版本就是HEAD鸯匹,上上一個(gè)版本就是HEAD,當(dāng)然往上100個(gè)版本寫100個(gè)比較容易數(shù)不過來泄伪,所以寫成HEAD~100殴蓬,舉個(gè)栗子,像這個(gè)就是$ git reset --hard HEAD^
回到上個(gè)版本蟋滴,等你回到上個(gè)版本后科雳,這個(gè)時(shí)候再用git log
就會(huì)發(fā)現(xiàn),最新的版本不見啦脓杉,突然糟秘,這個(gè)時(shí)候想
其實(shí)新版本也不錯(cuò),突然想再退回去球散。如果終端沒關(guān)的話尿赚,可以往上翻版本號(hào),就是在commit
后面特別長的一串?dāng)?shù)字蕉堰,比如:$ git reset --hard 3628164
(后面的數(shù)字不必打太多凌净,系統(tǒng)會(huì)自動(dòng)搜索,但太短也不行屋讶,可能會(huì)出現(xiàn)重復(fù)的版本號(hào)冰寻,導(dǎo)致系統(tǒng)無法確定)但如果
終端關(guān)閉,版本號(hào)也不記得皿渗,咋辦斩芭?Git提供了一個(gè)命令git reflog
用來記錄你的每一次命令,所以.....
一般常用的命令:
1. git add .
2. git commit -m "windows"
(3. git config --global user.email "你的郵箱"
4. git config --global user.name "用戶名")
這兩條是在Windows系統(tǒng)下會(huì)用到的代碼乐疆,linux可忽略划乖,且第二條放在這兩條之后
5. git remote add origin https://github.com/ranzhouhang/ranzhouhang-task62-homework1.git
6.git push -u origin master
總結(jié):以上是git的最基本的操作,還有很多值得去學(xué)習(xí)的了解挤土,未完待續(xù)~