Git的使用

關(guān)于Git的使用總結(jié)

先來一張大佬鎮(zhèn)樓

1.創(chuàng)建版本庫

$ mkdir learngit
$ cd learngit
$ pwd
創(chuàng)建本地庫

pwd命令用于顯示當(dāng)前目錄
通過git init命令把這個目錄變成Git可以管理的倉庫:

$ git init

添加文件到Git倉庫(把小豬佩奇放進冰箱),分三步:
第一步,將添加的文件拖入本地庫目錄下,即usegit文件夾

第二步姥宝,使用命令git add <file>,注意,可反復(fù)多次使用崔列,添加多個文件;

第三步旺遮,使用git commit -m "XXX"命令赵讯,-m后面輸入的是本次提交的說明

這里我創(chuàng)建了一個readme.txt文件,內(nèi)容為

life is short i use python
添加文件到Git庫

2.查看工作區(qū)狀態(tài)

git status命令可以讓我們時刻掌握倉庫當(dāng)前的狀態(tài)


當(dāng)前工作區(qū)狀態(tài)

接下來對readme.txt進行修改耿眉,修改為

life is short i need python

再來查看當(dāng)前工作區(qū)狀態(tài)



此時上面的命令告訴我們readme.txt被修改過了边翼,但還沒有提交修改
如果忘記了上次修改的內(nèi)容,


這特喵也能忘記~~~

可以使用git diff命令



這個時候就可以看見修改了什么內(nèi)容
提交修改和添加新文件操作一致:

$ git add readme.txt
$ git commit -m "change use"

此時再查看工作區(qū)狀態(tài)



顯示當(dāng)前沒有需要提交的修改鸣剪,表明修改成功

3.版本回退

再進行一次修改操作组底,將readme.txt修改為

life is short i need python
i love python

然后進行提交,檢查工作區(qū)狀態(tài)

$ git add readme.txt
$ git commit -m "add"
$ git status

顯示提交成功筐骇,這個時候回顧一下债鸡,我們已經(jīng)對readme.txt進行了兩次修改
原始版本(create版本):

life is short i use python

第一次修改(change use版本):

life is short i need python

第二次修改(add版本):

life is short i need python
i love python

這個時候要查看有幾個版本的修改就可以使用git log命令
git log命令顯示從最近到最遠的提交日志



commit后面一長串字符是版本號
如果想返回上一個版本即change use版本
就可以使用git reset命令:

$ git reset --hard HEAD^

再查看readme.txt的內(nèi)容

$ cat readme.txt
這里我多打了一個$符~ T_T

可以看到確實回退到了change use版本
再使用git log查看修改日志



發(fā)現(xiàn)最新的那個add版本不見了~


如何找回:
只要上面的命令行窗口還沒有被關(guān)掉,你就可以找到那個add版本的commit 是f3db0a27...拥褂,再執(zhí)行:

$ git reset --hard f3db0a27

版本號沒必要寫全娘锁,前幾位就可以了,Git會自動去找饺鹃。當(dāng)然也不能只寫前一兩位莫秆,因為Git可能會找到多個版本號,就無法確定是哪一個了悔详。

再去查看readme.txt的內(nèi)容

$ cat readme.txt

可以看到add版本又回來了


Git的版本回退速度非衬魇海快,因為Git在內(nèi)部有個指向當(dāng)前版本的HEAD指針茄螃,當(dāng)你回退版本的時候缝驳,Git僅僅是把HEAD從指向change use改為指向add
然后順便把工作區(qū)的文件更新了。所以你讓HEAD指向哪個版本號,你就把當(dāng)前版本定位在哪用狱。
如果你把命令行窗口關(guān)閉了运怖。。夏伊。

那么也有解決方法:
Git提供了一個命令git reflog用來記錄你的每一次命令

$ git reflog

此時又可以愉快的查看到版本號了

講到這里就需要提到工作區(qū)摇展,暫存區(qū)和分支master的概念了
先上圖:



工作區(qū)有一個隱藏目錄.git,這個不算工作區(qū)溺忧,而是Git的版本庫咏连。

Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū)鲁森,還有Git為我們自動創(chuàng)建的第一個分支master祟滴,以及指向master的一個指針叫HEAD。
分支和HEAD的概念以后再講歌溉。

前面講了我們把小豬佩奇放進冰箱的時候垄懂,是分三步執(zhí)行的:
第一步是將添加的文件拖入工作區(qū)目錄下

第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區(qū)研底;

第二步是用git commit提交更改埠偿,實際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支。

因為我們創(chuàng)建Git版本庫時榜晦,Git自動為我們創(chuàng)建了唯一一個master分支,所以羽圃,現(xiàn)在乾胶,git commit就是往master分支上提交更改。

你可以簡單理解為朽寞,需要提交的文件修改通通放到暫存區(qū)识窿,然后,一次性提交暫存區(qū)的所有修改脑融。

git checkout -- file可以丟棄工作區(qū)的修改:

$ git checkout -- readme.txt
命令git checkout -- readme.txt意思就是喻频,把readme.txt文件在工作區(qū)的修改全部撤銷,這里有兩種情況:

一種是readme.txt自修改后還沒有被放到暫存區(qū)肘迎,現(xiàn)在甥温,撤銷修改就回到和版本庫一模一樣的狀態(tài);

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

總之狰挡,就是讓這個文件回到最近一次git commit或git add時的狀態(tài)。
git checkout -- file命令中的--很重要,沒有--加叁,就變成了“切換到另一個分支”的命令
命令git reset HEAD file可以把暫存區(qū)的修改撤銷掉(unstage)倦沧,重新放回工作區(qū):

$ git reset HEAD readme.txt
Unstaged changes after reset:
M readme.txt

git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)它匕。當(dāng)我們用HEAD時展融,表示最新的版本。

在Git中超凳,刪除也是一個修改操作愈污,我們實戰(zhàn)一下,先添加一個新文件test.txt到Git并且提交:

$ git add test.txt
$ git commit -m "add test.txt"

一般情況下轮傍,你通常直接在文件管理器中把沒用的文件刪了暂雹,或者用rm命令刪了:

$ rm test.txt
這個時候,Git知道你刪除了文件创夜,因此杭跪,工作區(qū)和版本庫就不一致了,git status命令會立刻告訴你哪些文件被刪除了:

$ git status

現(xiàn)在你有兩個選擇驰吓,一是確實要從版本庫中刪除該文件涧尿,那就用命令git rm刪掉,并且git commit:

$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d17efd8] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
現(xiàn)在檬贰,文件就從版本庫中被刪除了姑廉。

另一種情況是刪錯了,因為版本庫里還有呢翁涤,所以可以很輕松地把誤刪的文件恢復(fù)到最新版本:

$ git checkout -- test.txt

git checkout其實是用版本庫里的版本替換工作區(qū)的版本桥言,無論工作區(qū)是修改還是刪除,都可以“一鍵還原”葵礼。

以上就是git基本用法了

But !

其實你可以直接下載一個GitHub Desktop

一切都解決了号阿! ! 鸳粉!

當(dāng)然讀了這篇文章扔涧,更有助于你理解GitHub Desktop是如何實現(xiàn)項目的管理
下面附上一張網(wǎng)圖! 幫助理解~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市届谈,隨后出現(xiàn)的幾起案子枯夜,更是在濱河造成了極大的恐慌,老刑警劉巖疼约,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卤档,死亡現(xiàn)場離奇詭異,居然都是意外死亡程剥,警方通過查閱死者的電腦和手機劝枣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門汤踏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舔腾,你說我怎么就攤上這事溪胶。” “怎么了稳诚?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵哗脖,是天一觀的道長。 經(jīng)常有香客問我扳还,道長才避,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任氨距,我火速辦了婚禮桑逝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘俏让。我一直安慰自己楞遏,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布首昔。 她就那樣靜靜地躺著寡喝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪勒奇。 梳的紋絲不亂的頭發(fā)上预鬓,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音赊颠,去河邊找鬼珊皿。 笑死,一個胖子當(dāng)著我的面吹牛巨税,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播粉臊,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼草添,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扼仲?” 一聲冷哼從身側(cè)響起远寸,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎屠凶,沒想到半個月后驰后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡矗愧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年灶芝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡夜涕,死狀恐怖犯犁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情女器,我是刑警寧澤酸役,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站驾胆,受9級特大地震影響涣澡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丧诺,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一入桂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锅必,春花似錦事格、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至劣纲,卻和暖如春逢捺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背癞季。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工劫瞳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绷柒。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓志于,卻偏偏與公主長得像,于是被迫代替她去往敵國和親废睦。 傳聞我的和親對象是個殘疾皇子伺绽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,092評論 2 355

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

  • Git和Github學(xué)習(xí) 1.創(chuàng)建版本庫 安裝git,至于這個話題就不細說了嗜湃,按照你電腦的操作系統(tǒng)下載一個合適的g...
    郭子web閱讀 373評論 0 0
  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git奈应,從https:/...
    落魂灬閱讀 12,665評論 4 54
  • Git 命令行學(xué)習(xí)筆記 Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉庫完整的鏡像下來...
    sunnyghx閱讀 3,922評論 0 11
  • Git 基礎(chǔ) 基本原理 客戶端并不是只提取最新版本的文件快照购披,而是把代碼倉庫完整的鏡像下來杖挣。這樣一來,任何一處協(xié)同...
    __silhouette閱讀 15,887評論 5 147
  • 這幾天做成了照片分割系列啦刚陡,啦啦啦
    喵咪敏閱讀 178評論 0 0