1.安裝
安裝完成后,還需要最后一步設(shè)置,在命令行輸入:
$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"
2.創(chuàng)建倉庫
假如建在E盤
cd E: 進(jìn)入E盤mkdir learngit 在E:盤下建立learngit文件夾cd learngit 進(jìn)入learngit文件夾git init 將當(dāng)前目錄變成Git可以管理的倉庫
瞬間Git就把倉庫建好了,而且告訴你是一個(gè)空的倉庫(empty Git repository),細(xì)心的讀者可以發(fā)現(xiàn)當(dāng)前目錄下多了一個(gè).git的目錄,這個(gè)目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動(dòng)修改這個(gè)目錄里面的文件,不然改亂了,就把Git倉庫給破壞了。
如果你沒有看到.git目錄,那是因?yàn)檫@個(gè)目錄默認(rèn)是隱藏的,用ls -ah命令就可以看見。
3.在倉庫里創(chuàng)建文件
言歸正傳,現(xiàn)在我們編寫一個(gè)readme.txt文件,內(nèi)容如下:
Git is a version control system.Git is free software.
一定要放到learngit目錄下(子目錄也行),因?yàn)檫@是一個(gè)Git倉庫,放到其他地方Git再厲害也找不到這個(gè)文件。
和把大象放到冰箱需要3步相比,把一個(gè)文件放到Git倉庫只需要兩步。
第一步,用命令git add告訴Git,把文件添加到倉庫:
$ git add readme.txt
執(zhí)行上面的命令,沒有任何顯示,這就對了,Unix的哲學(xué)是“沒有消息就是好消息”,說明添加成功。
第二步,用命令git commit告訴Git,把文件提交到倉庫:
$ git commit -m "wrote a readme file"
簡單解釋一下git commit命令,-m后面輸入的是本次提交的說明,可以輸入任意內(nèi)容,當(dāng)然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動(dòng)記錄。
嫌麻煩不想輸入-m "xxx"行不行?確實(shí)有辦法可以這么干,但是強(qiáng)烈不建議你這么干,因?yàn)檩斎胝f明對自己對別人閱讀都很重要。實(shí)在不想輸入說明的童鞋請自行Google,我不告訴你這個(gè)參數(shù)。
git commit命令執(zhí)行成功后會(huì)告訴你,1個(gè)文件被改動(dòng)(我們新添加的readme.txt文件),插入了兩行內(nèi)容(readme.txt有兩行內(nèi)容)。
為什么Git添加文件需要add,commit一共兩步呢?
因?yàn)閏ommit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
$ git add file1.txt $ git add file2.txt $ git add file3.txt $ git commit -m "add 3 files."
初始化小結(jié):
1.初始化一個(gè)Git倉庫,使用git init命令。
2.配置用戶信息:$ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"
使用Windows的童鞋要特別注意:
千萬不要使用Windows自帶的記事本編輯任何文本文件。原因是Microsoft開發(fā)記事本的團(tuán)隊(duì)使用了一個(gè)非常弱智的行為來保存UTF-8編碼的文件,他們自作聰明地在每個(gè)文件開頭添加了0xefbbbf(十六進(jìn)制)的字符,你會(huì)遇到很多不可思議的問題,比如,網(wǎng)頁第一行可能會(huì)顯示一個(gè)“?”,明明正確的程序一編譯就報(bào)語法錯(cuò)誤,等等,都是由記事本的弱智行為帶來的。建議你下載Notepad++代替記事本,不但功能強(qiáng)大,而且免費(fèi)!記得把Notepad++的默認(rèn)編碼設(shè)置為UTF-8 without BOM即可:
4.修改文件
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
git status命令可以讓我們時(shí)刻掌握倉庫當(dāng)前的狀態(tài),上面的命令告訴我們,readme.txt被修改過了,但還沒有準(zhǔn)備提交的修改。
$ git diff:可以查看修改的內(nèi)容(已經(jīng)add 或者commit的就看不了了)
雖然Git告訴我們r(jià)eadme.txt被修改了,但如果能看看具體修改了什么內(nèi)容,自然是很好的。比如你休假兩周從國外回來,第一天上班時(shí),已經(jīng)記不清上次怎么修改的readme.txt,所以,需要用git diff這個(gè)命令看看
創(chuàng)建新文件 、修改文件小結(jié):
提交修改文件和提交新文件是一樣的兩步,
第一步,使用命令$ git add file1.txt,注意,可反復(fù)多次使用,添加多個(gè)文件;
第二步,使用命令$ git commit -m "wrote a readme file",完成。
5.查看歷史版本
$ git log
當(dāng)然了,在實(shí)際工作中,我們腦子里怎么可能記得一個(gè)幾千行的文件每次都改了什么內(nèi)容,不然要版本控制系統(tǒng)干什么。版本控制系統(tǒng)肯定有某個(gè)命令可以告訴我們歷史記錄,在Git中,我們用git log命令查看:
如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上參數(shù):
$ git log --pretty=oneline
6.版本退回
$ git reset
好了,現(xiàn)在我們啟動(dòng)時(shí)光穿梭機(jī),準(zhǔn)備把readme.txt回退到上一個(gè)版本,也就是“add distributed”的那個(gè)版本,怎么做呢?
首先,Git必須知道當(dāng)前版本是哪個(gè)版本,在Git中,用HEAD表示當(dāng)前版本,上一個(gè)版本就是HEAD,上上一個(gè)版本就是HEAD,當(dāng)然往上100個(gè)版本寫100個(gè)比較容易數(shù)不過來,所以寫成HEAD~100。
現(xiàn)在,我們要把當(dāng)前版本“append GPL”回退到上一個(gè)版本“add distributed”,就可以使用git reset命令:
$ git reset --hard HEAD^
--hard參數(shù)有啥意義?這個(gè)后面再講,現(xiàn)在你先放心使用。
版本退回和前進(jìn)小結(jié)
HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令
git reset --hard commit_id。
穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個(gè)版本。要重返未來,用
git reflog查看命令歷史,以便確定要回到未來的哪個(gè)版本。
git reset --hard commit_id。
git checkout其實(shí)是用版本庫里的版本替換工作區(qū)的版本,無論工作區(qū)是修改還是刪除,都可以“一鍵還原”。