Git教程筆記+Atom推薦(一·入門(mén))

git——分布式版本控制軟件
其實(shí)這個(gè)只是用來(lái)了解一下git,其實(shí)我個(gè)人比較偏向使用圖形化工具,比較清晰直觀,當(dāng)然在寫(xiě)代碼的時(shí)候用終端git addgit commit -m "description"比較快,主要記住這個(gè)就可以了。
注意:<>內(nèi)為可替換內(nèi)容,敲命令行時(shí)不需要敲<>

主要內(nèi)容:創(chuàng)建git repository,將文件添加到版本庫(kù),git的狀態(tài)和文件的變化,版本&回退。
命令概覽

$ git init #使當(dāng)前目錄變成可以管理的版本倉(cāng)庫(kù)(git repository)
$ git add filename #將文件添加到版本倉(cāng)庫(kù)
$ git commit -m "description" #把文件提交到倉(cāng)庫(kù)
$ git status #查看repository的狀態(tài)
$ git diff #查看修改了哪些內(nèi)容
$ git log #查看提交日志
$ git log --pretty=oneline #簡(jiǎn)潔地顯示提交日志
$ git reset --hard HEAD~<3> #回退到某個(gè)版本,比如這里回退到第前3個(gè)版本
$ git reset --hard <commit ID> #回退到特定ID的版本
$ git reflog #記錄了每個(gè)命令,可以用來(lái)查看每個(gè)操作的編號(hào)


創(chuàng)建git repository

  1. 找合適的地方,創(chuàng)建一個(gè)空目錄,比如在/Users/Vector/github路徑下,創(chuàng)建并進(jìn)入,一般不要用中文的目錄名,容易出現(xiàn)問(wèn)題
$ mkdir learnGit
$ cd learnGit
$ pwd
/Users/Vector/github/learnGit
  1. git init 命令將這個(gè)目錄變成可以管理的版本倉(cāng)庫(kù)(git repository)
VectorLu:learnGit Vector$ git init
Initialized empty Git repository in /Users/Vector/github/learnGit/.git/

可以發(fā)現(xiàn)當(dāng)前目錄下多了一個(gè).git目錄,這個(gè)目錄就是git用來(lái)跟蹤管理版本倉(cāng)庫(kù)的,不要去手動(dòng)修改。ls命令不會(huì)顯示帶.的目錄,用ls -a就可以顯示了

VectorLu:learnGit Vector$ ls
VectorLu:learnGit Vector$ ls -a
.   ..  .git

將文件添加到版本庫(kù)

注意
首先這里再明確一下,所有的版本控制系統(tǒng),其實(shí)只能跟蹤文本文件的改動(dòng),比如TXT文件,網(wǎng)頁(yè),所有的程序代碼等等,Git也不例外。版本控制系統(tǒng)可以告訴你每次的改動(dòng),比如在第5行加了一個(gè)單詞“Linux”,在第8行刪了一個(gè)單詞“Windows”。而圖片、視頻這些二進(jìn)制文件,雖然也能由版本控制系統(tǒng)管理,但沒(méi)法跟蹤文件的變化,只能把二進(jìn)制文件每次改動(dòng)串起來(lái),也就是只知道圖片從100KB改成了120KB,但到底改了啥,版本控制系統(tǒng)不知道,也沒(méi)法知道。
不幸的是,Microsoft的Word格式是二進(jìn)制格式,因此,版本控制系統(tǒng)是沒(méi)法跟蹤Word文件的改動(dòng)的,前面我們舉的例子只是為了演示,如果要真正使用版本控制系統(tǒng),就要以純文本方式編寫(xiě)文件。
因?yàn)槲谋臼怯芯幋a的,比如中文有常用的GBK編碼,日文有Shift_JIS編碼,如果沒(méi)有歷史遺留問(wèn)題,強(qiáng)烈建議使用標(biāo)準(zhǔn)的UTF-8編碼,所有語(yǔ)言使用同一種編碼,既沒(méi)有沖突,又被所有平臺(tái)所支持。
使用Windows的童鞋要特別注意:
千萬(wàn)不要使用Windows自帶的記事本編輯任何文本文件。原因是Microsoft開(kāi)發(fā)記事本的團(tuán)隊(duì)使用了一個(gè)非常弱智的行為來(lái)保存UTF-8編碼的文件,他們自作聰明地在每個(gè)文件開(kāi)頭添加了0xefbbbf(十六進(jìn)制)的字符,你會(huì)遇到很多不可思議的問(wèn)題,比如,網(wǎng)頁(yè)第一行可能會(huì)顯示一個(gè)“?”,明明正確的程序一編譯就報(bào)語(yǔ)法錯(cuò)誤,等等,都是由記事本的弱智行為帶來(lái)的。

個(gè)人很推薦github官方出品的atom文本編輯器,簡(jiǎn)直好看漂亮好用,當(dāng)然老牌的sublime也不錯(cuò),但是要付費(fèi)(雖然無(wú)限期試用),但是atom是開(kāi)源免費(fèi)的,而且跟git配合天衣無(wú)縫。

用Atom寫(xiě)文本文件

如圖中所示,剛剛創(chuàng)建未提交的文件名是綠色的,已經(jīng)提交過(guò)的文件但是經(jīng)過(guò)修改后,沒(méi)有提交修改后的文件名是黃色的“。要注意Atom在編輯文件時(shí),點(diǎn)文件編輯窗口的關(guān)閉鍵,如果當(dāng)前的修改沒(méi)有保存,會(huì)彈出提示,但是如果點(diǎn)的是Atom的關(guān)閉鍵。。。它就直接退出了。。。不會(huì)提示沒(méi)有保存,這是個(gè)bug,改天看它更新版本的時(shí)候會(huì)不會(huì)修正把,或者什么時(shí)候去官網(wǎng)說(shuō)一下。
一定要放到learngit目錄下(子目錄也行),因?yàn)檫@是一個(gè)Git倉(cāng)庫(kù)。
把一個(gè)文件放到Git倉(cāng)庫(kù)只需要兩步:

  1. 把文件添加到倉(cāng)庫(kù),沒(méi)有任何消息就是表示添加成功
$ git add README.md
  1. 把文件提交到倉(cāng)庫(kù)
VectorLu:learnGit Vector$ git commit -m "wrote a readme file"
[master (root-commit) 3be5479] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 README.md

-m之后是本次提交的說(shuō)明,最好能夠簡(jiǎn)要概括這次提交了什么內(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."

git的狀態(tài)和文件的變化

$ git status查看repository的狀態(tài),$ git diff查看修改了哪些內(nèi)容


版本&回退

$ git log由近到遠(yuǎn)顯示提交日志,可以加上參數(shù)--pretty=oneline,使顯示的信息更加簡(jiǎn)潔

VectorLu:learnGit Vector$ git log --pretty=oneline
8512e8bcdda603a6184128be151174f962221dd2 append GPL
f53fa0eae5a3ad9689473f01ef9b38cab366cfd5 distributed
3be547948169bfa0fcff7d4755949859628f3312 wrote a readme file

桌面版的github上顯示詳細(xì)的信息

HEAD表示當(dāng)前版本,HEAD~100第前100個(gè)版本git reset --hard HEAD回退到上一個(gè)版本。

VectorLu:SE Vector$ git reset --hard HEAD~3
HEAD is now at 547e18f 迭代計(jì)算梯度

回退到以前的版本A之后,用git log命令就找不到A之后的版本了,如果想回到之后的版本,需要git reset --hard commitID,但是如果不記得commitID(誰(shuí)沒(méi)事會(huì)記這個(gè)),可以用$ git reflog,它記錄了每一個(gè)命令

VectorLu:SE Vector$ git reflog
547e18f HEAD@{0}: reset: moving to HEAD~3
da1401a HEAD@{1}: commit: 修改了精度,使之更加嚴(yán)謹(jǐn)
697c680 HEAD@{2}: commit: 精度有問(wèn)題,重新編寫(xiě)函數(shù)測(cè)算是否重合
5afa969 HEAD@{3}: commit: 測(cè)算是否有圓重合
547e18f HEAD@{4}: commit: 迭代計(jì)算梯度
9c80a1b HEAD@{5}: commit (initial): start code the function

VectorLu:SE Vector$ git reset --hard 547e18f
HEAD is now at 547e18f 迭代計(jì)算梯度
  1. HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們?cè)诎姹镜臍v史之間穿梭,使用命令git reset --hard commit_id。
  1. 穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個(gè)版本。
  2. 要重返未來(lái),用git reflog查看命令歷史,以便確定要回到未來(lái)的哪個(gè)版本。

參考來(lái)源:廖雪峰的git教程

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,848評(píng)論 9 163
  • Git是目前最流行的版本管理系統(tǒng),也是最先進(jìn)的分布式版本控制系統(tǒng)(distributed version cont...
    pro648閱讀 5,958評(píng)論 1 17
  • 最近在看android模擬事件點(diǎn)擊,找了adb input命令,具體參考adb shell input的用法但是發(fā)...
    2遠(yuǎn)閱讀 8,659評(píng)論 1 0
  • 藝術(shù)是心靈的修行,沒(méi)有語(yǔ)言,沒(méi)有說(shuō)道,凡說(shuō)必錯(cuò)。一切只能用心去感應(yīng),去沉醉。 藝術(shù)家走的越遠(yuǎn),話語(yǔ)應(yīng)該越少。你只需...
    心覺(jué)閱讀 635評(píng)論 2 0
  • 校園里的銀杏葉,落了滿地。 香山的紅葉,依舊沒(méi)有紅。 逛了半座山,才發(fā)現(xiàn)山腳下的那棵是最紅、最鮮艷的。 偶然遇見(jiàn)的...
    一路向北__閱讀 167評(píng)論 0 0

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