Git學(xué)習(xí)筆記(一)

安裝

Debain系統(tǒng)使用sudo apt install git命令安裝

安裝完成后使用下列命令設(shè)置用戶名及郵箱:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

創(chuàng)建版本庫(kù)

建立新目錄:

$ mkdir learngit
$ cd learngit
$ pwd
/Users/XXX/learngit

設(shè)置當(dāng)前目錄為倉(cāng)庫(kù):

$ git init
Initialized empty Git repository in /Users/XXX/learngit/.git/

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

新建一個(gè)readme.txt文件跃须,內(nèi)容如下:

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

把一個(gè)文件放到GIt倉(cāng)庫(kù)共兩步反璃。
第一步,添加文件:

$ git add readme.txt

第二步,遞交文件及說(shuō)明:

$ git commit -m "wrote a readme file"

版本控制

修改readme.txt文件并提交:

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

使用git status命令查看倉(cāng)庫(kù)狀態(tài)
使用git diff比較各版本差異

版本回退

再次修改readme.txt并提交:

Git is a distributed version control system.
Git is free software distributed under the GPL.

使用git log查看提交日志
使用git reset回退版本(HEAD表示當(dāng)前版本现使,HEAD^表示上一版本,以此類推)

$ git reset --hard HEAD^
原版本

回退后

要回到append GPL這一版本侣灶,可以通過(guò)git reflog查找commit id倔既,并通過(guò)git reset命令回退,如:

$ git reflog
ac816fd HEAD@{2}: reset: moving to HEAD^
6440cfb HEAD@{3}: commit: append GPL
ac816fd HEAD@{4}: commit: add distributed
7e84cca HEAD@{5}: commit (initial): wrote a readme file

此處得到commit id: 6440cfb

$ git reset --hard 6440cfb 
HEAD 現(xiàn)在位于 6440cfb append GPL

完成回退

工作區(qū)與暫存區(qū)

再次修改readme.txt

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.

并在工作區(qū)新建LINCESE文件切心。
使用兩次git add命令將readme.txtLINCESE都添加后飒筑,暫存區(qū)就會(huì)變成以下?tīng)顟B(tài):

添加到暫存區(qū)

git add命令實(shí)際上就是把要提交的所有修改放到暫存區(qū)(Stage),然后绽昏,執(zhí)行git commit就可以一次性把暫存區(qū)的所有修改提交到分支协屡。一旦提交后,如果又沒(méi)有對(duì)工作區(qū)做任何修改全谤,那么工作區(qū)就是“干凈”的》粝現(xiàn)在版本庫(kù)變成了這樣,暫存區(qū)就沒(méi)有任何內(nèi)容了:

提交到分支

管理修改

與其他版本控制系統(tǒng)不同认然,Git跟蹤并管理的是修改补憾,而非文件。

第一步卷员,對(duì)readme.txt做一個(gè)修改盈匾,比如加一行內(nèi)容:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes.

然后,添加到暫存區(qū)毕骡。

$ git add readme.txt
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   readme.txt
#

然后削饵,再修改readme.txt:

Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

提交:

$ git commit -m "git tracks changes"
[master bbbc32b] git tracks changes
 1 file changed, 1 insertion(+)

提交后岩瘦,再看看狀態(tài):

$ 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")

發(fā)現(xiàn)第二次的修改未被提交。理由如下:

第一次修改 -> git add -> 第二次修改 -> git commit

Git管理的是修改窿撬,當(dāng)使用git add命令后启昧,在工作區(qū)的第一次修改被放入暫存區(qū),準(zhǔn)備提交劈伴,但是箫津,在工作區(qū)的第二次修改并沒(méi)有放入暫存區(qū),所以宰啦,git commit只負(fù)責(zé)把暫存區(qū)的修改提交了,也就是第一次的修改被提交了饼拍,第二次的修改不會(huì)被提交赡模。

提交后,用git diff HEAD -- readme.txt命令可以查看工作區(qū)和版本庫(kù)里面最新版本的區(qū)別:

$ git diff HEAD -- readme.txt 
diff --git a/readme.txt b/readme.txt
index 76d770f..a9c5755 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,4 @@
 Git is a distributed version control system.
 Git is free software distributed under the GPL.
 Git has a mutable index called stage.
-Git tracks changes.
+Git tracks changes of files.

可見(jiàn)师抄,第二次修改確實(shí)沒(méi)有被提交漓柑。
如要提交則應(yīng)該先添加到暫存區(qū),再提交叨吮。

撤銷修改

如果需要修改的內(nèi)容還未被添加到暫存區(qū)辆布,git checkout -- file可以丟棄工作區(qū)的修改。命令git checkout -- readme.txt意思就是茶鉴,把readme.txt文件在工作區(qū)的修改全部撤銷锋玲,這里有兩種情況:

一種是readme.txt自修改后還沒(méi)有被放到暫存區(qū),現(xiàn)在涵叮,撤銷修改就回到和版本庫(kù)一模一樣的狀態(tài)惭蹂;

一種是readme.txt已經(jīng)添加到暫存區(qū)后,又作了修改割粮,現(xiàn)在盾碗,撤銷修改就回到添加到暫存區(qū)后的狀態(tài)。

總之舀瓢,就是讓這個(gè)文件回到最近一次git commitgit add時(shí)的狀態(tài)廷雅。

如果需要修改的內(nèi)容已經(jīng)被添加到暫存區(qū),但是還未被提交京髓,可以用命令git reset HEAD file可以把暫存區(qū)的修改撤銷掉(unstage)航缀,重新放回工作區(qū)。

git reset命令既可以回退版本朵锣,也可以把暫存區(qū)的修改回退到工作區(qū)谬盐。當(dāng)我們用HEAD時(shí),表示最新的版本诚些。

如果要修改的內(nèi)容已被提交飞傀,則參考版本回退章節(jié)內(nèi)容皇型。

刪除文件

在Git中,刪除也是一個(gè)修改操作砸烦。
如果要?jiǎng)h除版本庫(kù)中文件的弃鸦,使用git rmgit commit洗鸵。
如果要恢復(fù)本地誤刪文件的棕所,則使用git checkout -- <file> 來(lái)恢復(fù)到上次提交的狀態(tài)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仓坞,一起剝皮案震驚了整個(gè)濱河市颜说,隨后出現(xiàn)的幾起案子购岗,更是在濱河造成了極大的恐慌,老刑警劉巖门粪,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件喊积,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡玄妈,警方通過(guò)查閱死者的電腦和手機(jī)乾吻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拟蜻,“玉大人绎签,你說(shuō)我怎么就攤上這事≡凸” “怎么了诡必?”我有些...
    開封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)屈张。 經(jīng)常有香客問(wèn)我擒权,道長(zhǎng),這世上最難降的妖魔是什么阁谆? 我笑而不...
    開封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任碳抄,我火速辦了婚禮,結(jié)果婚禮上场绿,老公的妹妹穿的比我還像新娘剖效。我一直安慰自己,他們只是感情好焰盗,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開白布璧尸。 她就那樣靜靜地躺著,像睡著了一般熬拒。 火紅的嫁衣襯著肌膚如雪爷光。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天澎粟,我揣著相機(jī)與錄音蛀序,去河邊找鬼欢瞪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛徐裸,可吹牛的內(nèi)容都是我干的遣鼓。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼重贺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼骑祟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起气笙,我...
    開封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤次企,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后潜圃,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抒巢,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年秉犹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稚晚。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崇堵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出客燕,到底是詐尸還是另有隱情鸳劳,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布也搓,位于F島的核電站赏廓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏傍妒。R本人自食惡果不足惜幔摸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颤练。 院中可真熱鬧既忆,春花似錦、人聲如沸嗦玖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宇挫。三九已至苛吱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間器瘪,已是汗流浹背翠储。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工绘雁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彰亥。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓咧七,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親任斋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子继阻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容