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

GIT簡(jiǎn)介

1.GTI簡(jiǎn)介

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

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

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

    集中式:
  • 先說(shuō)集中式版本控制系統(tǒng),版本庫(kù)是集中存放在中央服務(wù)器的,而干活的時(shí)候,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本,然后開(kāi)始干活,干完活了,再把自己的活推送給中央服務(wù)器。中央服務(wù)器就好比是一個(gè)圖書(shū)館,你要改一本書(shū),必須先從圖書(shū)館借出來(lái),然后回到家自己改,改完了,再放回圖書(shū)館。

  • 集中式版本控制系統(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)根本沒(méi)有“中央服務(wù)器”,每個(gè)人的電腦上都是一個(gè)完整的版本庫(kù),這樣,你工作的時(shí)候,就不需要聯(lián)網(wǎng)了,因?yàn)榘姹編?kù)就在你自己的電腦上。既然每個(gè)人電腦上都有一個(gè)完整的版本庫(kù),那多個(gè)人如何協(xié)作呢?比方說(shuō)你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時(shí),你們倆之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了。

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

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

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

2、安裝GIT

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


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

3、創(chuàng)建版本庫(kù)

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

4、基本操作

基本操作

  • git status 命令可以讓我們時(shí)刻掌握倉(cāng)庫(kù)的當(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^^,在多的話就寫(xiě)成HEAD-100
$ git reset --hard HEAD^
HEAD is now at 8bcb79e 第一次提交

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

  • git reflog 查看命令歷史,以便于確定要回到未來(lái)的哪個(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 從版本庫(kù)中刪除改文件,并且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分支后是無(wú)法查看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í)行以下的語(yǔ)句的時(shí)候,可以看到我們?cè)赿ev分支上提交,但是如果沒(méi)有提交到master上,在master上是沒(méi)有數(shù)據(jù)的,跟master沒(méi)有關(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

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

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

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



  • 第三步:查看建立好的版本庫(kù)


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

查看秘鑰:



把出來(lái)的秘鑰復(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è)試通過(guò)
ssh -t git@github.com
或者
ssh -T git@github.com

以上的我沒(méi)有測(cè)試通過(guò),,,,
下面來(lái)看下我自己的push推送吧



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

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

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

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



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



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

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



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

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容