Git使用指南(未完待續(xù))

標(biāo)簽(空格分隔): Git


安裝

  • Linux:sudo apt-get install git
  • Mac: 1.homebrew 2.Xcode集成Git
  • Windows:msysgit是Windows版的Git,從http://msysgit.github.io/下載,用git bash打開

創(chuàng)建版本庫

版本庫又名倉(cāng)庫,英文名repository

創(chuàng)建版本庫步驟:

  1. 選擇一個(gè)合適的地方,創(chuàng)建一個(gè)空目錄
    $ mkdir learngit $ cd learngit $ pwd /Users/michael/learngit

  2. 使用git init命令把這個(gè)目錄變成Git可以管理的倉(cāng)庫


把文件添加到版本庫

注意

所有的版本控制系統(tǒng),其實(shí)只能跟蹤文本文件的改動(dòng),比如TXT文件,網(wǎng)頁,所有的程序代碼等等,Git也不例外。版本控制系統(tǒng)可以告訴你每次的改動(dòng),比如在第5行加了一個(gè)單詞“Linux”,在第8行刪了一個(gè)單詞“Windows”。而圖片、視頻這些二進(jìn)制文件,雖然也能由版本控制系統(tǒng)管理,但沒法跟蹤文件的變化,只能把二進(jìn)制文件每次改動(dòng)串起來,也就是只知道圖片從100KB改成了120KB,但到底改了啥,版本控制系統(tǒng)不知道,也沒法知道。

不幸的是,Microsoft的Word格式是二進(jìn)制格式,因此,版本控制系統(tǒng)是沒法跟蹤Word文件的改動(dòng)的,前面我們舉的例子只是為了演示,如果要真正使用版本控制系統(tǒng),就要以純文本方式編寫文件。

編碼

因?yàn)槲谋臼怯芯幋a的,比如中文有常用的GBK編碼,日文有Shift_JIS編碼,如果沒有歷史遺留問題,強(qiáng)烈建議使用標(biāo)準(zhǔn)的UTF-8編碼,所有語言使用同一種編碼,既沒有沖突,又被所有平臺(tái)所支持。

Windows的記事本

使用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即可。

添加步驟

  1. 編寫一個(gè)文件,放到learngit目錄下
  2. 用命令git add readme.txt告知git有文件添加:
$ git add readme.txt
  1. 用命令git commit告知git,把文件提交到倉(cāng)庫:
$ git commit -m "wrote a readme file"

簡(jiǎn)單解釋一下git commit命令,-m后面輸入的是本次提交的說明,可以輸入任意內(nèi)容,當(dāng)然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動(dòng)記錄。

git commit命令執(zhí)行成功后會(huì)告訴你,1個(gè)文件被改動(dòng)(我們新添加的readme.txt文件),插入了兩行內(nèi)容(readme.txt有兩行內(nèi)容)。

為什么Git添加文件需要add,commit一共兩步呢?因?yàn)?code>commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt
$ git add file3.txt
$ git commit -m "add 3 files."

時(shí)光穿梭機(jī)

  • 版本回退
  • 工作區(qū)和暫存區(qū)
  • 管理修改
  • 撤銷修改
  • 刪除文件

如何提交修改

如果修改了文件,比如在git_example_1.txt中修改了如下內(nèi)容:

Git is a distributed version control system.
Git is free software.

然后運(yùn)行git status查看結(jié)果,顯示會(huì)如下

$ 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í)刻掌握倉(cāng)庫當(dāng)前的狀態(tài),上面的命令告訴我們,readme.txt被修改過了,但還沒有準(zhǔn)備提交的修改。

此外可以使用git diff命令來查看具體修改了什么內(nèi)容。

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

知道了對(duì)文件進(jìn)行了什么修改,就可以把它提交到倉(cāng)庫了,使用git add
git add git_example_1.txt

小結(jié):

  • 要隨時(shí)掌握工作區(qū)的狀態(tài),使用git status命令
  • 如果git status告訴你有文件被修改過,用git diff可以查看修改內(nèi)容。

版本回退

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容