首先需要安裝git,Linux和Mac比較方便可以用apt-get install git(Linux),brew install git(在安裝了homebrew的Mac上),windows可以直接下載msysgit,安裝即可。
完成安裝之后記得給自己寫上門牌號:
git config --global user.name "Your Name"
git config --global user.email "eamil@example.com"
1、創(chuàng)建版本庫
如何在本地創(chuàng)建Git的版本庫。
在你想要保存版本庫的文件目錄下(注:盡量使用英文名做目錄名),使用
git init
使用后會提示你:
Initialized empty Git repository in your repository path
在目錄下會出現(xiàn)一個.git文件夾,應該是默認為隱藏文件夾,調(diào)出來即可。
2、Git結構概述
3、創(chuàng)建readme.txt
在git目錄下,創(chuàng)建一個文本文檔,內(nèi)容隨意寫,保存為readme.txt。
(1)文件提交
git add readme.txt
告訴git提交的文件是什么——提交到暫存區(qū)
git commit -m "first version of readme file"
可以利用-m為這次提交的文件寫注釋,方便未來的版本控制時,讓你明白你在提交這個文件的時候做了什么。
當然,你可以一次性add多個文件,在利用commit提交的時候,也可以一次性寫多個文件。
commit:犯罪;承諾;委托;托付。(理解?)
git commit 提交更改,將暫存區(qū)內(nèi)容提交到當前分支。
(2)本地版本控制
git status
用來查看repository的當前狀態(tài)。
D:\myFirstGit>git status
On branch master
nothing to commit, working tree clean
接下來,修改readme.txt.,再利用git status來查看自己的repository。
D:\myFirstGit>git status
On branch master
Changes not staged for commit:
(use "git add..." to update what will be committed)
(use "git checkout --..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
說明修改過后還沒有進行add 與 commit做提交。試試commit之后git status是什么樣。
D:\myFirstGit>git add readme.txt
D:\myFirstGit>git commit -m "lol added"
[master 36d72f9] lol added
1 file changed, 2 insertions(+), 1 deletion(-)
這個操作把我們修改過的內(nèi)容提交到了目前的分支上。
D:\myFirstGit>git status
On branch master
nothing to commit, working tree clean
再利用git status查看目前狀態(tài),發(fā)現(xiàn)沒有修改了但是還未提交的內(nèi)容。
git diff
git diff 來查看修改前后的不同。
D:\myFirstGit>git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 88b9dbc..37b890d 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
ReadMe First Please!
-Lol!
\ No newline at end of file
+Lol!
+Changes had been changed.
\ No newline at end of file
windows下使用type來看看readme.txt里面寫了什么(跟Linux下的cat一樣):
D:\myFirstGit>type readme.txt
ReadMe First Please!
Lol!
Changes had been changed.
重新add 和 commit 之后,就已經(jīng)把最新修改的內(nèi)容放入了你的repository中。
git log
git log <filename>來查看目前文件一共有多少個版本。
D:\myFirstGit>git log readme.txt
最近一次修改
commit 63580d24072303d79a2fe6ea10407bba644c2d32 (HEAD -> master) #HEAD指向目前版本
Author: WZChan 進行修改的用戶
Date: Fri Sep 29 11:19:53 2017 +0800 進行修改的時間
changes 顯示在git commit -m 后所標注的內(nèi)容
倒數(shù)第二次修改
commit 36d72f9e0c8d763571277a2d93158c3b948e7fd6
Author: WZChan
Date: Fri Sep 29 11:04:19 2017 +0800
lol added
倒數(shù)第三次修改
commit 03f1920945cd99987dd56a57ae0420d0e91c01e1
Author: WZChan
Date: Fri Sep 29 10:58:30 2017 +0800
myFirstGitFile
如果不需要更多信息,可以試試 git log --pretty=oneline <filename>
D:\myFirstGit>git log --pretty=oneline readme.txt
63580d24072303d79a2fe6ea10407bba644c2d32 (HEAD -> master) changes
36d72f9e0c8d763571277a2d93158c3b948e7fd6 lol added
03f1920945cd99987dd56a57ae0420d0e91c01e1 myFirstGitFile
在上述操作時會有一串“亂碼”是commit id,在稍后的版本回溯中會用到。
git reset
reset有三種方式:
git reset –mixed:此為默認方式,不帶任何參數(shù)的git reset,即時這種方式,它回退到某個版本,只保留源碼,回退commit和index信息
git reset –soft:回退到某個版本,只回退了commit的信息,不會恢復到index file一級。如果還要提交,直接commit即可
git reset –hard:徹底回退到某個版本,本地的源碼也會變?yōu)樯弦粋€版本的內(nèi)容
目前我想要把我的文件回退到commit為lol added的版本,也就是第二次修改的版本中。
執(zhí)行:
git reset --hard 36d72
D:\myFirstGit>git reset --hard 36d72
HEAD is now at 36d72f9 lol added
可以看到目前的HEAD指向了lol added,而我們輸入的那一段數(shù)字就是所謂的commit id
檢查一下:
D:\myFirstGit>git log --pretty=oneline readme.txt
36d72f9e0c8d763571277a2d93158c3b948e7fd6 (HEAD -> master) lol added
03f1920945cd99987dd56a57ae0420d0e91c01e1 myFirstGitFile
如果要回去到changes的版本,則相應的去尋找commit id,執(zhí)行:
git reset --hard 63580d
結果:
D:\myFirstGit>git log --pretty=oneline readme.txt
63580d24072303d79a2fe6ea10407bba644c2d32 (HEAD -> master) changes
36d72f9e0c8d763571277a2d93158c3b948e7fd6 lol added
03f1920945cd99987dd56a57ae0420d0e91c01e1 myFirstGitFile
git reflog
可以查看歷史命令。
從而方便利用其來尋找自己文件版本的commit id。