git和github的使用筆記

第1章:Git的起源

自由主義教皇“林納斯·托瓦茲”


Git是由Linux之父Linus開發(fā)的,在2005年4月3號(hào)開始開發(fā),僅四天時(shí)間Git就可以投入使用了。到同年6月份,Linux已經(jīng)在使用Git管理代碼了。

Linux版本管理最早是通過手工合并代碼的方式進(jìn)行的,不使用CVS的原因就是Linus堅(jiān)決反對這種集中式的版本管理工具。而迫于其他開發(fā)者的壓力,Linus最后決定使用BitKeeper一種分布式的版本管理工具。與集中式不同,使用分布式的版本管理工具每個(gè)人都可以在本地進(jìn)行版本的管理,如日志提交、代碼提交、創(chuàng)建tag和分支、合并分支等等操作。

而在2005年4月,Andrew Tridgell 為了開發(fā)一個(gè)可以與BitKeeper交互的工具,試圖反編譯BitKeeper。這讓開發(fā)該軟件的公司BitMover得知并取消了Linux社區(qū)免費(fèi)試用BitKeeper的權(quán)利。這也成為了Linus開發(fā)Git的契機(jī),促進(jìn)了Git這一偉大作品的誕生。


第2章:Git的使用

1.Git的安裝

Windows版的Git,從https://git-scm.com/download/win下載然后按默認(rèn)選項(xiàng)安裝即可。

安裝完成后,右鍵打開菜單欄找到“Git”->“Git Bash Here”,蹦出一個(gè)類似命令行窗口的東西,就說明Git安裝成功!


默認(rèn)git窗口背景是黑色的,字體也比較小,可以通過右鍵設(shè)置


安裝完成后,還需要最后一步設(shè)置,在命令行輸入:

git config --global user.name "Your Name"

git config --global user.email "email@example.com"

git config user.name 查看配置的姓名

git config user.email 查看配置的郵箱

因?yàn)镚it是分布式版本控制系統(tǒng),所以,每個(gè)機(jī)器都必須自報(bào)家門:你的名字和Email地址。

git配置的文件會(huì)自動(dòng)保存在:c盤----用戶----asus----.gitconfig


2. Linux的幾條命令

mkdir xxx?新建文件夾

幾條

vi x.txt?新建文件

????輸入 i 進(jìn)入編輯模式

????ESC + :+ wq 保存并退出

????ESC + :+ q! 不保存并退出

cd xxx?進(jìn)入xxx目錄

cd ..?返回上一級(jí)目錄

ls?列出當(dāng)前文件夾中所有文件

pwd?顯示當(dāng)前目錄

cat x.txt 顯示文件內(nèi)容

clear?清屏


3. 創(chuàng)建版本庫

git init? ? 初始化版本庫

????創(chuàng)建成功會(huì)提示 Initialized empty Git repository in c:/Users/xxx/Desktop/demogit/.git/

????初始化執(zhí)行g(shù)it命令,會(huì)提示fatal: Not a git repository (or any of the parent directories): .git

????你還會(huì)發(fā)現(xiàn)目錄上多出一個(gè).git的文件夾,這個(gè)文件夾是Git來跟蹤管理版本庫的,不要去修改和刪除這個(gè)文件里的內(nèi)容。


git add x.xx? ??添加指定文件到暫存區(qū)中

????不會(huì)有任何提示,但是提交成功了

????失敗會(huì)提示fatal: pathspec 'x.txt' did not match any files

????可能會(huì)出現(xiàn)警告,由于linux和window的換行符不一致導(dǎo)致的。

????警告內(nèi)容:warning: LF will be replaced by CRLF in a.txt.

????解決方式:git config --global core.autocrlf false

怎么查看文件有沒有添加成功呢?

git status

????1. 紅色表示在工作區(qū)。

????2.綠色表示在暫存區(qū)。

????3. 沒有任何顯示代表所有文件位于版本區(qū)。

git commit -m 'xxx'? ?提交暫存區(qū)所有文件到版本區(qū)

????提交成功會(huì)提示:

????????[master (root-commit) 88bbb64] first commit

????????1 file changed, 2 insertions(+)

????????create mode 100644 x.txt

如果只輸入git commit會(huì)出問題,這時(shí)需要ESC + :+ q! 退出就好


4. 理解工作區(qū)+版本區(qū)+暫存區(qū)


????工作區(qū)(working Directory):簡單的理解——你在電腦里能看到的目錄。

????暫存區(qū)(stage):介于工作區(qū)和版本區(qū)中間,工作區(qū)到版本區(qū)的“必經(jīng)之路”

????版本庫(Repository):工作區(qū)有一個(gè)隱藏目錄.git,準(zhǔn)確的來說這個(gè)不算工作區(qū),而是Git的版本庫。

第一步是用git add把文件添加進(jìn)暫存區(qū)。

第二步是用git commit把暫存區(qū)的所有內(nèi)容提交到當(dāng)前版本庫。


5. 差異對比

????git diff : 比較暫存區(qū)與工作區(qū)

????git diff --cached : 比較版本區(qū)與暫存區(qū)

????git diff master : 比較版本區(qū)與工作區(qū)


6. 日志+版本號(hào)

????git log?顯示從最近到最遠(yuǎn)的所有提交日志

????git reflog?顯示每次提交(commit)的commit id


7. 版本回退+版本穿梭+版本撤銷

????git reset --hard HEAD^? ? 版本回退(回退一次提交)

????git reset --hard 版本號(hào)? 回退到指定的commit id版本

????git reset HEAD? 用版本庫中的文件去替換暫存區(qū)的全部文件。

????git checkout -- x.txt? ? 用暫存區(qū)指定文件去替換工作區(qū)的指定文件(危險(xiǎn))

????git checkout HEAD x.txt? 用版本庫中的文件替換暫存區(qū)和工作區(qū)的文件(危險(xiǎn))

????git rm --cached x.txt 從暫存區(qū)刪除文件


8. 刪除文件

!!!文件或者文件夾必須通過git管理(也就是提交到版本區(qū))才能進(jìn)行刪除

????git rm x.txt 刪除文件(使用git提供的命令刪除文件結(jié)果會(huì)同步到暫存區(qū))

????git rm -r xxxx 刪除文件夾(不能刪除空文件夾)

git交互圖示如下:



9. 分支

分支圖示

分支常用命令

git checkout -b dev 創(chuàng)建dev分支,并切換到dev分支(會(huì)把原來分支的文件復(fù)制一份到新分支中)

git branch? 查看當(dāng)前分支

git checkout master 切換分支

git merge dev? 合并dev分支到當(dāng)前分支

git branch -d dev? 刪除指定分支

git diff branch1 branch2 顯示出兩個(gè)分支之間所有有差異的文件的詳細(xì)差異

git diff branch1 branch2 --stat 顯示出兩個(gè)分支之間所有有差異的文件列表

git diff branch1 branch2 xxx? 顯示指定文件的詳細(xì)差異

!!! 當(dāng)文件夾為空時(shí)創(chuàng)建新分支會(huì)把原來分支覆蓋掉,要?jiǎng)?chuàng)建分支必須先把當(dāng)前分支的文件提交到版本庫


第3章:版本控制系統(tǒng)的區(qū)別

1. 集中式版本控制系統(tǒng)

????代表有SVN、CVS

?????? 集中式版本控制系統(tǒng),版本庫是集中存放在中央服務(wù)器的,每個(gè)開發(fā)人員電腦里只有其中一個(gè)版本。


2. 分布式版本控制系統(tǒng)

? ? ?代表有Git、BitKeeper

????????每個(gè)開發(fā)人員電腦里都有一個(gè)完整的版本庫。同時(shí),它也需要一臺(tái)充當(dāng)“中央服務(wù)器”的電腦,來方便“交換”大家的代碼修改。


3. 集中式與分布式的區(qū)別


第4章:GitHub

1. GitHub是什么?

????GitHub是一個(gè)Git項(xiàng)目托管網(wǎng)站。需要注冊一個(gè)github賬號(hào)用來托管代碼


2. GitHub能做什么?

????能夠分享你的代碼或者其他開發(fā)人員配合一起開發(fā)。GitHub是一個(gè)基于Git的代碼托管平臺(tái),Git并不像SVN那樣有一個(gè)中心服務(wù)器。目前我們使 用到的Git命令都是在本地執(zhí)行,你就需要將數(shù)據(jù)放到一臺(tái)其他開發(fā)人員能夠連接的服務(wù)器上。


3. GitHub遠(yuǎn)程倉庫的使用

3.1. 本地倉庫內(nèi)容推送給遠(yuǎn)程倉庫

本地庫和遠(yuǎn)程庫打交道時(shí),要注意將本地文件交給本地庫管理

(1) 新建本地倉庫

????????????git init

????????????git add .

????????????git commit -m “first commit”

(2) 新建遠(yuǎn)程倉庫

? ? ? ? ? ? 在GitHub網(wǎng)站上點(diǎn)擊New repository


(3) 本地倉庫和遠(yuǎn)程倉庫進(jìn)行關(guān)聯(lián)

????????????git remote add origin https://github.com/xpromise/oa.git (HTTPS)

(4) 把本地倉庫內(nèi)容推送到遠(yuǎn)程倉庫中

????????????git push -u origin master (首次加-u)

我們第一次推送master分支時(shí),加上了-u參數(shù),Git不但會(huì)把本地的master分支內(nèi)容推送到遠(yuǎn)程新的master分支,還會(huì)把本地master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來,在以后的推送時(shí)可以簡化命令git push origin master。

備注:若在成功推送過一次代碼后,電腦不能夠自動(dòng)記住github的賬戶和密碼,執(zhí)行以下命令解決:git config --global credential.helper store

3.2. 遠(yuǎn)程倉庫有內(nèi)容克隆到本地進(jìn)行開發(fā)

克隆遠(yuǎn)程倉庫到本地

git clone https://github.com/xxx.git? (HTTPS)

!!! git克隆的是所有的分支,通過git branch查看不了,需要通過git checkout 分支名? ? ?直接切換到指定分支

3.3. 本地有內(nèi)容,遠(yuǎn)程有內(nèi)容,更新不同的內(nèi)容

第一種拉取方式:git pull origin master

? ? ? ? 將遠(yuǎn)程倉庫的master分支上代碼版本復(fù)制/合并到本地master分支上

? ? ? ? !!!?git pull可以直接拉取遠(yuǎn)程倉庫最新分支內(nèi)容

第二種拉取方式:git fetch origin master:tmp

? ? ? ? 新建一個(gè)tem分支,將遠(yuǎn)程倉庫的master分支上代碼版本復(fù)制到tep分支上,不會(huì)自動(dòng)合并

? ? ? ? !!!這種方式不常用,但面試可能會(huì)問


4. GitHub其他功能

1. Fork

將別人的項(xiàng)目clone一份,但是owner變成自己,這樣你就可以在遵守open source license的前提下任意修改這個(gè)項(xiàng)目了。

相當(dāng)于你在原項(xiàng)目的主分支上又建立了一個(gè)分支,你可以在該分支上任意修改,如果想將你的修改合并到原項(xiàng)目中,可以pull request,這樣原項(xiàng)目的作者就可以將你修改的東西合并到原項(xiàng)目的主分支上去,這樣你就為開源項(xiàng)目貢獻(xiàn)了代碼,開源項(xiàng)目就會(huì)在大家的努力下不斷地壯大和完善。


2. GitHub Pages(使用github搭建個(gè)人網(wǎng)站)

推送本地代碼到GitHub倉庫

創(chuàng)建本地倉庫

????????git init

????????git add .

????????git commit -m "xxx"

創(chuàng)建GitHub遠(yuǎn)程倉庫

本地倉庫關(guān)聯(lián)遠(yuǎn)程倉庫

????????git remote add origingit@github.com:xpromise/jd.git

推送本地更新

????????git push -u origin master

配置GitHub Pages選項(xiàng)


需要注意的問題

目錄第一層需要有一個(gè)index.html文件作為啟動(dòng)文件,命名不可更改。


部署完之后這個(gè)網(wǎng)址就可以訪問了https://zhanchujin.github.io/zhanchujin/


第五章:總結(jié)git常用的操作

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,818評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,185評論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,656評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,647評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,446評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,951評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,041評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,189評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,718評論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,800評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,419評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,420評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,755評論 2 371