Git有關知識簡介

GIT簡介

1.GTI簡介

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

  • Git官網:http://www.git-scm.com

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

    集中式:
  • 先說集中式版本控制系統,版本庫是集中存放在中央服務器的,而干活的時候,用的都是自己的電腦,所以要先從中央服務器取得最新的版本,然后開始干活,干完活了,再把自己的活推送給中央服務器。中央服務器就好比是一個圖書館,你要改一本書,必須先從圖書館借出來,然后回到家自己改,改完了,再放回圖書館。

  • 集中式版本控制系統最大的毛病就是必須聯網才能工作,如果在局域網內還好,帶寬夠大,速度夠快,可如果在互聯網上,遇到網速慢的話,可能提交一個10M的文件就需要5分鐘,這還不得把人給憋死啊。

    分布式:
  • 那分布式版本控制系統與集中式版本控制系統有何不同呢?首先,分布式版本控制系統根本沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

  • 和集中式版本控制系統相比,分布式版本控制系統的安全性要高很多,因為每個人電腦里都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那里復制一個就可以了。而集中式版本控制系統的中央服務器要是出了問題,所有人都沒法干活了

  • 在實際使用分布式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個局域網內,兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分布式版本控制系統通常也有一臺充當“中央服務器”的電腦,但這個服務器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣干活,只是交換修改不方便而已。

  • 弱化了服務器的功能,加強了個人的功能。

2、安裝GIT

  • 去官網下載安裝
  • 安裝完成后,在開始菜單里找到“Git”->“Git Bash”,蹦出一個類似命令行窗口的東西,就說明Git安裝成功!


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

3、創建版本庫

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

4、基本操作

基本操作

  • git status 命令可以讓我們時刻掌握倉庫的當前狀態
$ git status
On branch master   //當前的分支
nothing to commit, working directory clean
  • git diff 顧名思義就是查看difference,顯示的格式正式Unix通用的diff格式,可顯示修改文件的內容
$ 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 命令顯示從最近到最遠的提交日志
$ 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^ 加退到上一個版本,上上一個版本是HEAD^^,在多的話就寫成HEAD-100
$ git reset --hard HEAD^
HEAD is now at 8bcb79e 第一次提交

**這個時候在次查看就可以看到已經回退了**
$ git log --pretty=oneline
8bcb79e2f0c08c58c9cc37e7bfa11909fd0da1c7 第一次提交

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

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

分支管理

  • 創建dev分支,然后切換到dev分支(dev是名字,可以隨便取):
git branch dev
git checkout dev

或者
git checkout -b dev   //-b參數表示創建并切換

//以下的就是查看創建的分支
若蘭@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命令查看當前分支
$ git branch
* dev
  master

//現在可以在dev分支上修改或者提交內容了,當切換回master分支后是無法查看dev分支修改的內容的
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

  • 當我們執行以下的語句的時候,可以看到我們在dev分支上提交,但是如果沒有提交到master上,在master上是沒有數據的,跟master沒有關系
$ 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(+)
 
 //這個時候在查看,就已經合并了
 $ cat readme.txt
dev modefi

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

//在查看,就只有master一個主分支了
$ git branch
* master

5、GIT與GitHub

  • 作為開源代碼庫以及版本控制系統,GitHub擁有150多萬開發者用戶,隨著越來越多的應用程序轉移到了云上,GitHub已經成為了管理軟件開發以及發現已有代碼的首選方法。

搭建遠程版本庫

  • 第一步:https://github.com/ 進入注冊自己的賬號
  • 第二步:創建版本庫



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


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

查看秘鑰:



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



  • 在.ssh\目錄下創建一個config文件,內容如下:
Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile~/.ssh/id_rsa
Port 443

測試通過
ssh -t git@github.com
或者
ssh -T git@github.com

以上的我沒有測試通過,,,,
下面來看下我自己的push推送吧



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

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

這個時候,就會在這個目錄下創建本地版本庫

這個時候我們自己進入到這個目錄的根目錄下:



然后我們進入這個目錄下,把里面的文件剪切出來放到項目根目錄下,這個時候刪除那個空的文件夾



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

這個時候我們在次刷新網頁,可以看到我們的代碼已經同步到了github上面:



至此,這個時候我們已經完成了本地和遠程庫的同步。

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容