【git學習一】git add,commit的幾個命令

命令

  • git add 將文件添加到暫存區(qū)
  • git commit 將暫存區(qū)的內(nèi)容提交到(本地)分支

工作區(qū)痹仙、暫存區(qū)和分支

這幾個簡單命令的操作會將數(shù)據(jù)從工作區(qū)添加到版本庫里面。

image.png

命令的練習和總結(jié)

在此版本下進行操作:git version 2.13.0
總結(jié):

  1. git add change-me delete-me 【提交到暫存區(qū)贯卦,指定文件抗愁,將工作區(qū)的文件提交到暫存區(qū)】

  2. git add . 與 git add -A 【會將所有的工作區(qū)的文件放入暫存區(qū)】

  3. git add -u 【提交被修改(modified)和被刪除(deleted)文件,不包括新文件(new)】

  4. git rm --cached change-me delete-me 將暫存區(qū)移動到工作區(qū)
    當我們需要刪除暫存區(qū)或分支上的文件, 同時工作區(qū)也不需要這個文件了, 可以使用
    git rm file_path
    當我們需要刪除暫存區(qū)或分支上的文件, 但本地又需要使用, 只是不希望這個文件被版本控制, 可以使用
    git rm --cached file_path
    對于之前已經(jīng)在版本庫里面饱亮,使用git rm --cached 會將文件移除版本庫个盆,并放在工作區(qū)脖岛。這個時候文件對于版本來說是新增的。
    對于之前不再版本庫中砾省,就變成將暫存區(qū)移動到工作區(qū)鸡岗。

  5. git reset 【將暫存區(qū)的東西重置】
    git rm -- cached 是從stage(index混槐,暫存區(qū)) 里面刪除文件编兄,當你提交(commit)之后文件就會刪除了,就是移除版本庫声登。狠鸳。
    git reset HEAD -- file : 回退暫存區(qū)里的文件(還原為HEAD commit里面該文件的狀態(tài)),會撤銷從上一次提交(commit)之后的一些操作悯嗓。
    如果是對于新增文件件舵,這兩個操作時等效的。
    這兩個命令都是對stage,index的操作脯厨。
    git reset HEAD file (命令默認參數(shù)為 --mixed)
    git reset命令有三種模式:git reset [--<mode>] [<commit>]

    該命令用來回退當前的分支head 到 <commit>, 根據(jù)<mode>不同 --soft --mixed --hard铅祸,會對working tree和index和HEAD進行重置, mode分為以下幾種

    1) --soft: 回退到某個版本,只回退了commit的信息,不會恢復到index file一級(對索引不做改動)临梗。如果還要提交涡扼,直接commit即可,執(zhí)行該模式之后盟庞,git status 對所有修改的文件會提示(Changes to be committed)
    2) --mixed: 此為默認方式吃沪,不帶任何參數(shù)的git reset,即是這種方式什猖,它回退到某個版本票彪,只保留源碼,回退commit和index信息不狮。
    3) --hard: 徹底回退到某個版本降铸,本地的源碼也會變?yōu)樯弦粋€版本的內(nèi)容(所有的修改都會被丟棄)。

  6. git commit -am 【a必須寫在m的前面】
    對于已經(jīng)在版本庫(即git commit 過的文件)或者在暫存區(qū)的(即git add 過的文件)摇零,修改過的話垮耳,就可以直接使用git commit -am 進行提交,省略git add 的步驟
    直接使用會出現(xiàn)下面的錯誤
    $ git commit -am 'xx' 【對于沒有在版本庫的或者暫存區(qū)直接使用這個命令的話遂黍,會提示下面這】
    On branch master
    Untracked files:
    xx

    nothing added to commit but untracked files present

練習

test@m MINGW64 /d/test/test_git
$ git init
Initialized empty Git repository in D:/test/test_git/.git/

$ echo change me > change-me
$ echo delete me > delete-me

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        change-me
        delete-me

nothing added to commit but untracked files present (use "git add" to track)

test@m MINGW64 /d/test/test_git (master)
$ git add change-me delete-me #提交到暫存區(qū)终佛,指定文件,將工作區(qū)的文件提交到暫存區(qū)

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)【當時新增文件的時候雾家,會提示你使用git rm --cached 】

        new file:   change-me
        new file:   delete-me


test@m MINGW64 /d/test/test_git (master)
$ git rm --cached change-me delete-me 將暫存區(qū)移動到工作區(qū)
rm 'change-me'
rm 'delete-me'

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        change-me
        delete-me

nothing added to commit but untracked files present (use "git add" to track)

test@m MINGW64 /d/test/test_git (master)
$ git commit -m 'inital' 提交
[master (root-commit) 1bdcf48] inital
 2 files changed, 2 insertions(+)
 create mode 100644 change-me
 create mode 100644 delete-me

$ echo ok >> change-me
$ rm delete-me
$ echo Add me > add-me

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   change-me
        deleted:    delete-me

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        add-me

no changes added to commit (use "git add" and/or "git commit -a")

test@m MINGW64 /d/test/test_git (master)
$ git add . 【會將所有的工作區(qū)的文件放入暫存區(qū)铃彰,與命令git add -A 效果一樣】

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   add-me
        modified:   change-me
        deleted:    delete-me

test@m MINGW64 /d/test/test_git (master)
$ git reset 【將暫存區(qū)的東西重置】
Unstaged changes after reset:
M       change-me
D       delete-me

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   change-me
        deleted:    delete-me

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        add-me

no changes added to commit (use "git add" and/or "git commit -a")

$ git add -u 【提交被修改(modified)和被刪除(deleted)文件,不包括新文件(new)】

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   change-me
        deleted:    delete-me

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        add-me


test@m MINGW64 /d/test/test_git (master)
$ echo >> add-me

test@m MINGW64 /d/test/test_git (master)
$ 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:   add-me

no changes added to commit (use "git add" and/or "git commit -a")

test@m MINGW64 /d/test/test_git (master)
$ git add .

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)【當是更改文件的時候芯咧,會提示你使用git reset HEAD file 撤銷暫存區(qū)的東西】

        modified:   add-me


test@m MINGW64 /d/test/test_git (master)
$ git rm --cached add-me
rm 'add-me'

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        deleted:    add-me

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        add-me
$ git commit -m 'xx' 【這個時候牙捉,就會從index中刪除該文件,也就是不在版本庫里面了】

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        add-me

nothing added to commit but untracked files present (use "git add" to track)

test@m MINGW64 /d/test/test_git (master)
$ git add .

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   add-me 【這個時候文件就變成新增的敬飒,因為我們使用git rm --cache進行刪除】


test@m MINGW64 /d/test/test_git (master)
$ ls
add2.txt  add3.txt  add-me  change-me  ddxx

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        ddxx

nothing added to commit but untracked files present (use "git add" to track)

test@m MINGW64 /d/test/test_git (master)
$ git add .

test@m MINGW64 /d/test/test_git (master)
$ ls
add2.txt  add3.txt  add-me  change-me  ddxx

test@m MINGW64 /d/test/test_git (master)
$ ls
add2.txt  add3.txt  add-me  change-me  ddxx

test@m MINGW64 /d/test/test_git (master)
$ echo xx > ddxx

test@m MINGW64 /d/test/test_git (master)
$ ls
add2.txt  add3.txt  add-me  change-me  ddxx

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   ddxx

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:   ddxx


test@m MINGW64 /d/test/test_git (master)
$ git commit -am 'x' 【對于已經(jīng)在版本庫或者再暫存區(qū)的文件邪铲,可以直接使用 -am直接提交∥揶郑可以省略git add 】
[master 943ea92] x
 1 file changed, 1 insertion(+)
 create mode 100644 ddxx

test@m MINGW64 /d/test/test_git (master)
$ echo mm > xx

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        xx

nothing added to commit but untracked files present (use "git add" to track)

test@m MINGW64 /d/test/test_git (master)
$ git commit -am 'xx' 【對于沒有在版本庫的或者暫存區(qū)直接使用這個命令的話带到,會提示下面這】
On branch master
Untracked files:
        xx

nothing added to commit but untracked files present

test@m MINGW64 /d/test/test_git (master)
$ git reset

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        xx

nothing added to commit but untracked files present (use "git add" to track)

test@m MINGW64 /d/test/test_git (master)
$ ls
add2.txt  add3.txt  add-me  change-me  ddxx  xx

test@m MINGW64 /d/test/test_git (master)
$ > ddxx

test@m MINGW64 /d/test/test_git (master)
$ 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:   ddxx

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        xx

no changes added to commit (use "git add" and/or "git commit -a")

test@m MINGW64 /d/test/test_git (master)
$ git commit -am 'x'
[master 96bb4c2] x
 1 file changed, 1 deletion(-)

test@m MINGW64 /d/test/test_git (master)
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)

        xx

nothing added to commit but untracked files present (use "git add" to track)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市英染,隨后出現(xiàn)的幾起案子揽惹,更是在濱河造成了極大的恐慌,老刑警劉巖四康,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搪搏,死亡現(xiàn)場離奇詭異,居然都是意外死亡闪金,警方通過查閱死者的電腦和手機疯溺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人囱嫩,你說我怎么就攤上這事嗅辣。” “怎么了挠说?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵澡谭,是天一觀的道長。 經(jīng)常有香客問我损俭,道長蛙奖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任杆兵,我火速辦了婚禮雁仲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘琐脏。我一直安慰自己攒砖,他們只是感情好,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布日裙。 她就那樣靜靜地躺著吹艇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪昂拂。 梳的紋絲不亂的頭發(fā)上受神,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音格侯,去河邊找鬼鼻听。 笑死,一個胖子當著我的面吹牛联四,可吹牛的內(nèi)容都是我干的撑碴。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼朝墩,長吁一口氣:“原來是場噩夢啊……” “哼醉拓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起鱼辙,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤廉嚼,失蹤者是張志新(化名)和其女友劉穎玫镐,沒想到半個月后倒戏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡恐似,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年杜跷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡葛闷,死狀恐怖憋槐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情淑趾,我是刑警寧澤阳仔,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站扣泊,受9級特大地震影響近范,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜延蟹,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一评矩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阱飘,春花似錦斥杜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至高帖,卻和暖如春弱恒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棋恼。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工返弹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人爪飘。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓义起,卻偏偏與公主長得像,于是被迫代替她去往敵國和親师崎。 傳聞我的和親對象是個殘疾皇子默终,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

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