Git有關(guān)知識(shí)簡介

GIT簡介

1.GTI簡介

  • Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒有之一)

  • Git官網(wǎng):http://www.git-scm.com

    • 把E:\Git\bin加入到環(huán)境變量里面就可以在命令行下使用了
    • Git Bash打開之后可以模擬Linux命令(中文支持有點(diǎn)勉強(qiáng))
  • 集中式和分布式

    集中式:
  • 先說集中式版本控制系統(tǒng),版本庫是集中存放在中央服務(wù)器的熊尉,而干活的時(shí)候,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本,然后開始干活嗤谚,干完活了脆侮,再把自己的活推送給中央服務(wù)器。中央服務(wù)器就好比是一個(gè)圖書館蝙砌,你要改一本書,必須先從圖書館借出來跋理,然后回到家自己改择克,改完了,再放回圖書館前普。

  • 集中式版本控制系統(tǒng)最大的毛病就是必須聯(lián)網(wǎng)才能工作肚邢,如果在局域網(wǎng)內(nèi)還好,帶寬夠大汁政,速度夠快道偷,可如果在互聯(lián)網(wǎng)上缀旁,遇到網(wǎng)速慢的話,可能提交一個(gè)10M的文件就需要5分鐘勺鸦,這還不得把人給憋死啊并巍。

    分布式:
  • 那分布式版本控制系統(tǒng)與集中式版本控制系統(tǒng)有何不同呢?首先换途,分布式版本控制系統(tǒng)根本沒有“中央服務(wù)器”懊渡,每個(gè)人的電腦上都是一個(gè)完整的版本庫,這樣军拟,你工作的時(shí)候剃执,就不需要聯(lián)網(wǎng)了,因?yàn)榘姹編炀驮谀阕约旱碾娔X上懈息。既然每個(gè)人電腦上都有一個(gè)完整的版本庫肾档,那多個(gè)人如何協(xié)作呢?比方說你在自己電腦上改了文件A辫继,你的同事也在他的電腦上改了文件A怒见,這時(shí),你們倆之間只需把各自的修改推送給對(duì)方姑宽,就可以互相看到對(duì)方的修改了遣耍。

  • 和集中式版本控制系統(tǒng)相比,分布式版本控制系統(tǒng)的安全性要高很多炮车,因?yàn)槊總€(gè)人電腦里都有完整的版本庫舵变,某一個(gè)人的電腦壞掉了不要緊,隨便從其他人那里復(fù)制一個(gè)就可以了瘦穆。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問題纪隙,所有人都沒法干活了

  • 在實(shí)際使用分布式版本控制系統(tǒng)的時(shí)候,其實(shí)很少在兩人之間的電腦上推送版本庫的修改难审,因?yàn)榭赡苣銈儌z不在一個(gè)局域網(wǎng)內(nèi)瘫拣,兩臺(tái)電腦互相訪問不了,也可能今天你的同事病了告喊,他的電腦壓根沒有開機(jī)。因此派昧,分布式版本控制系統(tǒng)通常也有一臺(tái)充當(dāng)“中央服務(wù)器”的電腦黔姜,但這個(gè)服務(wù)器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活蒂萎,只是交換修改不方便而已秆吵。

  • 弱化了服務(wù)器的功能,加強(qiáng)了個(gè)人的功能五慈。

2纳寂、安裝GIT

  • 去官網(wǎng)下載安裝
  • 安裝完成后主穗,在開始菜單里找到“Git”->“Git Bash”,蹦出一個(gè)類似命令行窗口的東西毙芜,就說明Git安裝成功忽媒!


  • 然后進(jìn)行下面的配置,就能在每次提交的時(shí)候跳過輸入用戶名和郵箱了
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

3腋粥、創(chuàng)建版本庫

  • 什么是版本庫:
    • 什么是版本庫呢晦雨?版本庫又名倉庫,英文名repository隘冲,你可以簡單理解成一個(gè)目錄闹瞧,這個(gè)目錄里面的所有文件都可以被Git管理起來,每個(gè)文件的修改展辞、刪除奥邮,Git都能跟蹤,以便任何時(shí)刻都可以追蹤歷史罗珍,或者在將來某個(gè)時(shí)刻可以“還原”洽腺。
  • 創(chuàng)建一個(gè)版本庫非常簡單、首先靡砌,選擇一個(gè)合適的地方已脓,創(chuàng)建一個(gè)空的目錄:
    • 首先確定不要有中文
    • $ git init輸入以上命令,把這個(gè)目錄變成Git可以管理的倉庫
    • Initialized empty Git repository in D:/.git/
    • 細(xì)心的讀者可以發(fā)現(xiàn)當(dāng)前目錄下多了一個(gè).git的目錄通殃,這個(gè)目錄是Git來跟蹤管理版本庫的度液,沒事千萬不要手動(dòng)修改這個(gè)目錄里面的文件,不然改亂了画舌,就把Git倉庫給破壞了堕担。
  • 把文件夾添加到版本庫
    • 第一步 :用命令git add告訴Git,把文件添加到倉庫
首先 touch readme.txt (創(chuàng)建readme文件)
git add readme.txt
    • 第二步曲聂,用命令git commit告訴Git霹购,把文件提交到倉庫
 git commit -m "wrote a readme file"

4、基本操作

基本操作

  • git status 命令可以讓我們時(shí)刻掌握倉庫的當(dāng)前狀態(tài)
$ git status
On branch master   //當(dāng)前的分支
nothing to commit, working directory clean
  • git diff 顧名思義就是查看difference朋腋,顯示的格式正式Unix通用的diff格式齐疙,可顯示修改文件的內(nèi)容
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 80694b3..610db72 100644
--- a/readme.txt
+++ b/readme.txt
@@ -6,4 +6,4 @@ asdfsdafsdfsdf
 adfasdfsd

 adfdsaf
-asfasdfas
\ No newline at end of file
+asfasdfas123

  • git log 命令顯示從最近到最遠(yuǎn)的提交日志
$ git log
commit 0f32004c37a6b8b49430f6d22a333470738de94b
Author: wuyinlei <1069584784@qq.com>
Date:   Sat Apr 2 10:12:23 2016 +0800

    第二次提交

commit 8bcb79e2f0c08c58c9cc37e7bfa11909fd0da1c7
Author: wuyinlei <1069584784@qq.com>
Date:   Sat Apr 2 10:10:36 2016 +0800

    第一次提交


  • git log --pretty=oneline 顯示為一行
$ git log --pretty=oneline
0f32004c37a6b8b49430f6d22a333470738de94b 第二次提交
8bcb79e2f0c08c58c9cc37e7bfa11909fd0da1c7 第一次提交
  • git reset --hard HEAD^ 加退到上一個(gè)版本,上上一個(gè)版本是HEAD^^旭咽,在多的話就寫成HEAD-100
$ git reset --hard HEAD^
HEAD is now at 8bcb79e 第一次提交

**這個(gè)時(shí)候在次查看就可以看到已經(jīng)回退了**
$ git log --pretty=oneline
8bcb79e2f0c08c58c9cc37e7bfa11909fd0da1c7 第一次提交

  • git reflog 查看命令歷史贞奋,以便于確定要回到未來的哪個(gè)版本
$ git reflog
0f32004 HEAD@{0}: commit: 第二次提交
8bcb79e HEAD@{1}: commit (initial): 第一次提交

  • git reset --hard commit_id 在版本的歷史之間穿梭
  • git checkout --readme.txt意思就是:讓這個(gè)文件回到最近一次git commit 或者git add 時(shí)的狀態(tài)
  • git rm test.txt 從版本庫中刪除改文件,并且git commit
  • git checkout --test.txt 把誤刪的文件恢復(fù)到最新版本

分支管理

  • 創(chuàng)建dev分支穷绵,然后切換到dev分支(dev是名字轿塔,可以隨便取):
git branch dev
git checkout dev

或者
git checkout -b dev   //-b參數(shù)表示創(chuàng)建并切換

//以下的就是查看創(chuàng)建的分支
若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (master)
$ git checkout -b dev
Switched to a new branch 'dev'

若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ git checkout dev
Already on 'dev'


  • git branch命令查看當(dāng)前分支
$ git branch
* dev
  master

//現(xiàn)在可以在dev分支上修改或者提交內(nèi)容了,當(dāng)切換回master分支后是無法查看dev分支修改的內(nèi)容的
git checkout master

$ git checkout dev
Switched to branch 'dev'

若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ echo "dev modefi">>readme.txt

若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ cat readme.txt
dev modefi

  • 當(dāng)我們執(zhí)行以下的語句的時(shí)候,可以看到我們?cè)赿ev分支上提交勾缭,但是如果沒有提交到master上揍障,在master上是沒有數(shù)據(jù)的,跟master沒有關(guān)系
$ git add readme.txt
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.

若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ git commit -m "branch dev"
[dev warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.
16fd01f] branch dev
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.
 1 file changed, 1 insertion(+)

若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ cat readme.txt
dev modefi

若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ git checkout master
Switched to branch 'master'

若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (master)
$ cat readme.txt

  • 把dev分支的工作成果合并到master分支上:
    git merge dev
$ git merge dev
Updating 8bcb79e..16fd01f
Fast-forward
 readme.txt | 1 +
 1 file changed, 1 insertion(+)
 
 //這個(gè)時(shí)候在查看俩由,就已經(jīng)合并了
 $ cat readme.txt
dev modefi

  • 刪除分支:
    git branch -d dev
$ git branch -d dev
Deleted branch dev (was 16fd01f).

//在查看毒嫡,就只有master一個(gè)主分支了
$ git branch
* master

5、GIT與GitHub

  • 作為開源代碼庫以及版本控制系統(tǒng)采驻,GitHub擁有150多萬開發(fā)者用戶审胚,隨著越來越多的應(yīng)用程序轉(zhuǎn)移到了云上,GitHub已經(jīng)成為了管理軟件開發(fā)以及發(fā)現(xiàn)已有代碼的首選方法礼旅。

搭建遠(yuǎn)程版本庫

  • 第一步:https://github.com/ 進(jìn)入注冊(cè)自己的賬號(hào)
  • 第二步:創(chuàng)建版本庫



  • 第三步:查看建立好的版本庫


  • 生成秘鑰
ssh-keygen -t rsa -C"email.com"

查看秘鑰:



把出來的秘鑰復(fù)制到github上:
把生成的秘鑰:添加到github上



  • 在.ssh\目錄下創(chuàng)建一個(gè)config文件膳叨,內(nèi)容如下:
Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile~/.ssh/id_rsa
Port 443

測(cè)試通過
ssh -t git@github.com
或者
ssh -T git@github.com

以上的我沒有測(cè)試通過,痘系,菲嘴,,
下面來看下我自己的push推送吧



我們復(fù)制好這里面的地址汰翠,然后用GitBash切換到你的項(xiàng)目根目錄下
輸入以下的命令

$ git clone https://github.com/wuyinlei/loadermanager.git

這個(gè)時(shí)候龄坪,就會(huì)在這個(gè)目錄下創(chuàng)建本地版本庫

這個(gè)時(shí)候我們自己進(jìn)入到這個(gè)目錄的根目錄下:



然后我們進(jìn)入這個(gè)目錄下,把里面的文件剪切出來放到項(xiàng)目根目錄下复唤,這個(gè)時(shí)候刪除那個(gè)空的文件夾



這個(gè)時(shí)候在Git Bash上健田,還是切換到項(xiàng)目的根目錄下,輸入以下的命令:
$ git add .   (.代表著同步全部)
$ git commit -m "一個(gè)簡單的介紹loader加載器"   (""這里面添加注釋)
$ git push origin master   提交到遠(yuǎn)程版本庫
這個(gè)時(shí)候要輸入用戶名和密碼佛纫,輸入自己的用戶名和密碼妓局,接著enter按鍵。

這個(gè)時(shí)候我們?cè)诖嗡⑿戮W(wǎng)頁呈宇,可以看到我們的代碼已經(jīng)同步到了github上面:



至此好爬,這個(gè)時(shí)候我們已經(jīng)完成了本地和遠(yuǎn)程庫的同步。

參考文檔:廖雪峰的Git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末甥啄,一起剝皮案震驚了整個(gè)濱河市存炮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜈漓,老刑警劉巖穆桂,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異融虽,居然都是意外死亡充尉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門衣形,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事谆吴〉乖矗” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵句狼,是天一觀的道長笋熬。 經(jīng)常有香客問我,道長腻菇,這世上最難降的妖魔是什么胳螟? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮筹吐,結(jié)果婚禮上糖耸,老公的妹妹穿的比我還像新娘。我一直安慰自己丘薛,他們只是感情好嘉竟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著洋侨,像睡著了一般舍扰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上希坚,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天边苹,我揣著相機(jī)與錄音,去河邊找鬼裁僧。 笑死个束,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锅知。 我是一名探鬼主播播急,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼售睹!你這毒婦竟也來了桩警?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤昌妹,失蹤者是張志新(化名)和其女友劉穎捶枢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飞崖,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡烂叔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了固歪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒜鸡。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胯努,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出逢防,到底是詐尸還是另有隱情叶沛,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布忘朝,位于F島的核電站灰署,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏局嘁。R本人自食惡果不足惜溉箕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悦昵。 院中可真熱鬧肴茄,春花似錦、人聲如沸旱捧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枚赡。三九已至氓癌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贫橙,已是汗流浹背贪婉。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卢肃,地道東北人疲迂。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像莫湘,于是被迫代替她去往敵國和親尤蒿。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,661評(píng)論 9 163
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git幅垮,從https:/...
    落魂灬閱讀 12,665評(píng)論 4 54
  • 行駛在繁華的街頭 分不清 是暴風(fēng)雨前的黑暗 還是夜已降臨 暴雨傾城 來不及躲閃 雨點(diǎn)肆意敲打著車窗 也擊碎了 華燈...
    詩姬閱讀 307評(píng)論 2 0
  • 1公斤24K的黃金忙芒,除了可以用來打幾條金鏈子來孝敬老媽外示弓,還可以用來做釀酒桶。 沒錯(cuò)呵萨,就是用來做釀酒桶奏属。至于用來釀...
    SimplyWine閱讀 597評(píng)論 0 0