git命令行學習筆記

1、新建、刪除倉庫操做

git init         //新建一個空倉庫,倉庫就是當前目錄
git init [project-name]   //在當前目錄新建一個peoject-name倉庫,至關於在裏面新建了一個文件夾

2、版本回退

git log                  //顯示操做歷史記錄
git log --pretty=oneline //用一行來顯示操做歷史記錄
git reset --hard head^   //回退到上一個版本
git reset --hard 版本號   //回退到指定版本

回退的關鍵是要找到版本號,若是一不當心關掉了電腦,經過git log命令沒法打印出以前的操做記錄,可是能夠經過
git reflog  //顯示出操做記錄,從中找到版本號,而後再回退。
若是回退到了以前較舊的版本,又想回到較新的版本,也仍然能夠用git reset --hard 版本號 實現,
全部版本穿梭的關鍵就是準備定位版本號。

3、工做區和緩存區的概念

工做區就是電腦裏能看到的目錄,工做區裏有一個隱藏文件夾.git,這是git的版本庫。
Git的版本庫裏存了不少東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲咱們自動建立的第一個分支master,以及指向master的一個指針叫HEAD。git

clipboard.png

咱們把文件往Git版本庫裏添加的時候,是分兩步執行的:緩存

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

第二步是用git commit提交更改,實際上就是把暫存區的全部內容提交到當前分支。
當add完之後,再經過git commit 一次性將全部修改提交到分支。這時再git status就會顯示nothing to commit (working directory clean) 工做區乾淨。指針

核心:全部的修改在commit以前,必定要add,否則就不會提交到分支上code

第一次修改 ->  第二次修改 ->git add -> git commit
第一次修改 -> git add -> 第二次修改 -> git add -> git commit  //這兩種方式,最終獲得的效果是同樣的

clipboard.png

一般來講,在git commit之前通常都要git,add,不然咱們想要commit的內容實際上並無被commit上去,可是git提供了一個省略git add的辦法,那就是git commit -a -m '描述本次commit的內容' ,能夠忽略add 直接commit ,-m 參數通常在任何狀況下都不省略,由於提交描述是咱們和他人合做的關鍵blog

4、撤銷修改

git checkout -- filename

命令git checkout -- readme.txt意思就是,把readme.txt文件在工做區的修改所有撤銷,這裏有兩種狀況:圖片

一種是readme.txt自修改後尚未被放到暫存區,如今,撤銷修改就回到和版本庫如出一轍的狀態;ip

一種是readme.txt已經添加到暫存區後,又做了修改,如今,撤銷修改就回到添加到暫存區後的狀態。it

總之,就是讓這個文件回到最近一次git commit或git add時的狀態。ast

場景1:當你改亂了工做區某個文件的內容,想直接丟棄工做區的修改時,用命令git checkout -- file。

場景2:當你不但改亂了工做區某個文件的內容,還添加到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操做。

場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠程庫。

5、刪除和恢復

若是你刪除了一個文件1.txt
$ git status //git知道文件已經被你刪除了,並會提示你,提供瞭如下兩種選擇
$ git checkout -- 1.txt  //若是你是誤刪,經過這條指令能夠將文件恢復到工做區
$ rm 1.txt               //若是你肯定要刪除,經過這條指令能夠將文件從git版本庫中刪除

git checkout實際上是用版本庫裏的版本替換工做區的版本,不管工做區是修改仍是刪除,均可以「一鍵還原」。
命令git rm用於刪除一個文件。若是一個文件已經被提交到版本庫,那麼你永遠不用擔憂誤刪,可是要當心,你只能恢復文件到最新版本,你會丟失最近一次提交後你修改的內容。
圖片描述

相關文章
相關標籤/搜索