git入門

起步-關於版本控制

在介紹Git以前咱們先了解一下什麼是版本控制,在pro.Git這本書中說道:版本控制是一種記錄一個或若干文件內容變化,以便未來查閱特定版本修訂狀況的系統。關於版本控制,其實能夠對任何類型的文件進行版本控制。接下來我將介紹一下三種版本控制系統。html

本地版本控制系統

在最先的時候,一個開發者要開發一個項目,那時人們習慣於複製整個項目目錄的方式來保存不一樣的版本,這樣的好處是簡單,可是壞處也是很明顯的,當複製黏貼多了之後,一個開發者本身都會混淆,更不要說讓別人去了解了。git

集中化的版本控制系統

這個控制系統的出現已經能夠解決上面所說的那個問題了,同時還讓不一樣系統上的開發者能夠協同工做。這種方式的原理是利用一個單一的集中管理的服務器,用於保存全部文件的修訂版,而協同工做的人們都經過客戶端連到這臺服務器,取出最新的文件或者提交更新。可是這樣一樣也會有一個問題,假如一個開發者他爲公司開發項目,這就意味着,他想要提交更新代碼只能在公司,若是他想在家提交代碼,這是不能夠的,這樣的話就有極大的限制了,並且一旦服務器出現故障,那麼全部的代碼,就有可能就沒有了,這對開發者開說是一個巨大是災難。windows

分佈式的版本控制系統

什麼是分佈式的版本控制系統呢?這裏簡單舉一個例子,當一個項目有不少開發者去完成時,每一位開大者並不僅提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來,這就意味着其實每一位開發者的本地其實都是一個服務器,這樣的話即便個人代碼丟失了,那我同事或者遠程倉庫那應該會有備份我能夠去他那拷貝。接下來咱們要說的git就是一種分佈式的版本控制系統,至於爲何使用git而不使用其餘的你們能夠參考:。。。bash

Git簡單使用

安裝

git在Linux上安裝服務器

sudo apt-get install git編輯器

git在windows上安裝分佈式

https://git-scm.com/downloads...,而後下一步,下一步安裝就能夠了。安裝玩之後再本身的電腦上,命令行

注:若是上述安裝方式並不能安裝,你能夠去Git官網上去看看,或者百度一下,就會有不少的安裝教程。版本控制

設置配置信息

通常第一次安裝之後就應該去配置一下信息,安裝玩git之後,在電腦桌面上右擊能夠看到多了一個git Bash Here和git GUI Here,通常我比較經常使用git Bash,相似於一個命令行。指針

用戶信息

當安裝完 Git 應該作的第一件事就是設置你的用戶名稱與郵件地址。 這樣作很重要,由於每個 Git 的提交都會使用這些信息,而且它會寫入到你的每一次提交中,不可更改:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
注意:上面兩個是例子,請不要填寫同樣的user.name和user.email,還有就是在打的時候注意空格。設置完信息之後能夠利用git config --list查看用戶的配置信息。

開始使用Git

首先右擊選擇git bash利用mkdir gitDemo建立一個文件夾,而後cd ./gitDemo進入當前的文件夾,利用git init初始化項目倉庫,該命令將建立一個名爲 .git 的子目錄,注意這是一個隱藏文件,你須要先顯示出電腦上的隱藏文件才能看見。在具體上git命令以前咱們先理解一下git中常見的集中狀態

圖片描述

Working Directory:表示的是你電腦的上寫代碼的地方成爲工做區
Staging Area:表示的是暫存區
.git(Repository):表示的是本地的倉庫,也叫歷史區,
至於那幾個箭頭分別表示的是一些git中的操做等會咱們會說。

status命令

這個命令主要用於查看當前的狀態,另外一個功能就是有時候能夠提示你下一步的操做。等會咱們會使用到git status

add命令

首先咱們先再咱們建立的gitDemo文件夾中建立一個index.html,而後能夠隨便使用什麼編輯器打開寫上111此時這個文件存放的位置就是在工做區中,如今咱們可使用git add index.html,讓git來跟蹤這些文件,也能夠理解爲將文件從工做區提交到暫存區。這裏咱們用status進行查看一下

On branch master

Initial commit

Changes to be committed:
(use "git rm --cached <file>..." to unstage)

new file:   index.html

commit命令

在文件存放到暫存區之後咱們就要將文件提交到歷史區了此時咱們使用的命令是git commit -m '文件的描述','文件的描述'就是指你提交的代碼改了什麼,或者加了什麼功能等等。在使用git status進行查看

On branch master
nothing to commit, working tree clean
提示沒有什麼要提交的,工做區是乾淨的.
注意:一個文件若是在暫存區並未提交,可是此時又修改了文件,這就意味着文件有兩種狀態,一種在工做區,一種在暫存區這樣的文件是提交不上去的須要再次使用git add <文件名>

log命令

當文件提交到呢目的倉庫之後咱們可使用git log來查看提交的日誌文件,注意:日誌文件裏面有一個commit即提交的版本號,這個之後能夠用於版本回退。
例如:

commit a9ba8e706093c0ab2e5470c347e30a7a268edaf4 (HEAD -> master)
Author: YH <m17**@outlook.com>
Date: Wed Nov 8 22:19:43 2017 +0800

提交index

注:git log --oneline能夠在一行查看日誌

git log --graph --oneline圖形化查看日誌

rm 命令

若是一個文件存在暫存區瞭如今咱們又不想提交它了,那麼可使用git rm --cached <文件名>將文件從暫存區移除。

git diff

查看工做區和暫存區的區別,例如你能夠在index.html裏面在加一個222,而後使用git diff,那麼你就能夠看見

diff --git a/index.html b/index.html
index 58c9bdf..a30a52a 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,2 @@
111
+222
+222表示添加上一個222
查看工做區和當前分支倉庫的區別git diff HEAD
查看暫存區和歷史區的區別git diff --cached

reset版本回退

因爲咱們這裏只有一個版本,因此咱們將前面添加的222頁提交到本地倉庫中而後使用git log查看

commit 5161c3991d3e21777dd3ab7f2c9b853cf5397541 (HEAD -> master)
Author: YH <m17*@outlook.com>
Date: Wed Nov 8 22:38:32 2017 +0800

添加222

commit a9ba8e706093c0ab2e5470c347e30a7a268edaf4
Author: YH <m17*@outlook.com>
Date: Wed Nov 8 22:19:43 2017 +0800

提交index

如今咱們不想要222了,那該怎麼辦呢?咱們可使用git reset --hard HEAD^表示回到上一個版本,git reset --hard <版本號>表示回到指定版本,版本號就是git log輸出的commit

chekout命令

若是咱們在本地寫了代碼又不想要了怎麼辦呢?咱們可使用git checkout命令指從暫存區取到代碼放到工做區。到這裏咱們就應該理解了其實不管的工做區,暫存區,本地倉庫其實都是有一份代碼存放在那的,當咱們在工做區誤刪,誤改了什麼代碼其實並沒關係。

關於git分支的操做

其實在咱們初始化項目的時候git就默認爲咱們建立了一個master分支了,在git中默認有一個頭指針指向這個master, 當咱們每次提交代碼的時候該指針就會向前進行相應的移動。例如:咱們前提交了兩次代碼咱們使用git log --graph --oneline查看

  • 5161c39 (HEAD -> master) 添加222
  • a9ba8e7 提交index
    *表示當前操做的分支,

51**表示原來commit的簡化
HEAD:頭指針此時指向master

建立分支

git barnch <分支名稱>例如咱們這裏再建立一個dev分支git branch dev,利用git branch能夠查看當前支

dev

  • master切換分支
相關文章
相關標籤/搜索