Git使用教程之本地倉庫的基本操作


Git是什麼?

一個分散式版本控制系統,和SVN類似,但遠比SVN強大的一個版本控制系統 ①Git可以方便的在本地進行版本管理,就像你本地有一個版本管理伺服器一樣 我們可以選擇在適當的時間將本地版本推送到統一的版本管理伺服器 ②Git每次會提取整個代碼倉庫的完整鏡像,相當於對整個代碼倉庫都進行了一次備份,這樣計時版本伺服器除了問題,我們可以直接採用本地倉庫恢復!結合本地版本管理功能,遠端版本管理伺服器出問題了,我們依然能繼續寫自己的程式碼,當他恢復的時候我們再提交我們的本地版本! Git研發初期是為了更好的管理Linux內核,不過現在已經廣泛應用於各種專案!


安裝Git

如果你的系統是Linux的話,直接打開shell輸入:

sudo apt-get install git

當然,大部分的系統估計都是Windows,這就需要我們到網上下載一個Git For Window了,可到下述網站下載:https://git-for-windows .github.io/點擊Download,跳到Github ,下載對應安裝包即可!

點擊後進入頁面,下載如下檔案即可

#或直接下載目前最新版2.7.0: v2.7.0.windows.1接著傻瓜式的下一步就可以了~ 接下來你可以找到Git Gui然後開始玩Git,不過如果以後換到其他平台上,沒有圖形化介面你就寸步難行了! So,如果你有興趣的話,我們來玩命令列,以後換了系統也能正常的玩Git!


玩Git命令列

當然Git肯定是搭配著GitHub玩才夠味的,不過先來學習一些本地的指令先把! 當你安裝完Git後我們可以在任何位置右鍵,點選Git bash打開我們的Git命令列! 你可以可以點選Git Init Here直接在目前目錄下建立一個程式碼倉庫,又或者點擊Git Gui開啟Gui的圖形操作頁面!


1.建立程式碼倉庫

Step 1:先設定下我們的身分吧,這樣在提交程式碼的時候Git就可以知道是誰提交的,命令如下:

git config --global user.name "coder-pig"
git congif --global user.email "779878443@qq.com"

配置完成後,我們可以再次輸入,不包括名稱,可以看到我們已經配置成功了

#Step 2:找個地方創建我們的程式碼倉庫,然後我創建了一個新的專案:TestForGit,來到工程的目錄下,右鍵,打開我們的Git Bash,鍵入下述指令完成程式碼倉庫的建立!另外這個代碼倉庫其實是用來保存版本管理所需的一些信息,我們本地提交的代碼都會提交到代碼倉庫中,於是乎我們可以選擇還原到某個版本,當然,如果需要的話,我們還可以將保存在程式碼倉庫中的程式碼推送那個到遠端倉庫!例如GitHub!

git init

一個簡單的程式碼,程式碼倉庫就創建完畢了!繼續輸入:ls - al可以看到下目錄下有個.git的資料夾就是他了!

也可以打開工程目錄,同樣看也看到.git資料夾;如果我們想要刪除程式碼倉庫只需把這個資料夾刪掉即可!


2.提交本地碼

建立完程式碼倉庫,接下來說如何提交程式碼,我們是先用add指令把要提交的內容都加進來,然後commit才是真的去執行提交操作!指令範例如下,你可以一次次慢慢添加,當然也可以全部提交,直接git add .即可完成! 我們現在工程目錄下建立一個readme.txt的檔案試試,隨便寫點東西,然後依序輸入下述指令:

git add readme.txt
 git commit -m "Wrote a readme file"
#

輸入指令試試:

當然如果你可以add多個檔案後再一次commit,不過如果我們改動的檔案很多的話,我們可以git add .一次添加全部,但有一些是幾百年都不變一次的又或者自動生成的,比如lib,gen,bin文件夾等等,我們可以在代碼倉庫的根目錄下創建一個名為.gitignore的文件,然後編輯裡面的內容,把不需提交的文件忽略掉!

接著輸入要提交時忽略的文件內容即可!

那麼我們git add .的時候,這裡的檔案就不會add,另外可能你會覺的commit後面寫-m "xxx"很麻煩,想偷懶,但還是寫上吧!輸入的是本次提交的一些聲明,例如自己修改了些什麼!就好像寫程式碼的時候,你偷懶不寫註釋,過幾天你連自己寫的什麼鬼都不知道...


3.查看修改內容

好吧,前面我們用git add提交了整個專案到本地倉庫,接下來我們改點東西,然後使用git status可以查看 修改的部分,例如,我們刪除MainActivity.java裡的選單的程式碼以及多餘的選單相關的套件!

他就會提示我們哪些檔案發生了改變,但是還沒有提交,如果我們想看下具體更改了什麼,我們可以用到git diff命令,另外,按Q可以退回命令列輸入!


4.查看提交記錄

當然隨著我們專案的深入,Commit的次數也會越來越多,可能你早已忘記每次提交都修改了什麼內容, 沒事,Git幫你記著呢,使用git log即可查看歷史提交資訊!鍵入

git log

回車:

我們取其中一小部分來分析:

commit defd8af52be5183dfceb3e5cf23f78ea47d013b0
Author : coder-pig <779878443@qq.com>
Date:   Fri Jun 19 17:00:36 2015 +0800
MainActivity .

依序是:

  • 這次提交對應的版本號碼

  • 提交人:姓名信箱

  • 提交的時間

  • 提交版本修改的內容:就是我們commit -m "xxx"裡的xxx

5.撤銷未提交的修改

例如我們剛提交了一個版本,然後又亂七八糟地寫了一堆東西,突然發現不小心誤刪了一些東西,然後ctrl + s保存了,這個時候是不是欲哭無淚,不過有Git,只需一個checkout命令即可撤銷更改,當然是你還沒add的情況,比如我們在MainActivity裡隨便添加一條語句,然後ctrl + s保存代碼!

然後命令列鍵入:git diff:

#嗯,這裡可以看到我們改過的內容,我們可以回去把這句程式碼刪掉,但是如果改的有上千行你怎麼改, 於是乎這個時候我們可以用

git checkout src/com/jay/example/testforgit/MainActivity.java
##然後會神奇的發現,我們新寫的代碼沒了! duang一下就沒了,不信你可以自己試試

當然,如果我們已經add了的話,那麼checkout是沒任何作用的,我們要先取消添加才可以撤回提交,使用下述指令:

git reset HEAD src/com/jay/example/testforgit/MainActivity.java
git checkout src/com/jay/example/testforgit/MainActivity .java

6.版本回退

#第五點我們教了大家撤銷未提交的修改,但加入提交了,我們想回退到之前的某個版本怎麼辦? 第四點中我們可以透過git log查看我們的提交記錄,我們需要從這裡取得一個版本號, 一般我們只需要前七位元字元就夠了;另外在Git中,用

HEAD代表目前版本,上一個版本就是HEAD^, 再上一個版本就是HEAD^^依序類別推!我們先Git Log看下版本歷史先!

我們回到前一個提交的版本吧,依序鍵入下述指令:

git reset --hard HEAD
 git reset --hard HEAD^
 git log

這時看下我們的控制台:

可以看到我們已經回退到了前一個版本了,當然你可以直接這樣寫:

git reset --hard ad2080c

#就是這麼簡單!回退後,你突然後悔了,想回退回新的那個版本, 可是遺憾的是,你鍵入git log卻發現沒有了最新的那個版本號,這怎麼辦呢... 沒事,Git中給你提供了這顆"後悔藥",Git記錄著你輸入的每一條指令呢!鍵入:

git reflog

你會發現,版本號碼就在這裡:

然後鍵入:

git reset --hard ad2080c

#可以看到我們又回到了最新的版本了,就是這麼溜!

7.本節小節

本節介紹了專案管理工具Git來管理我們的本地倉庫,學習了一些基本的命令列操作,相信會為你的專案開發帶來便利,當然本地遠遠是不夠的,下一節我們將學習如何將我們的專案託管到GitHub上!敬請期待~


#