天天看點

Git常用指令,終于知道reset怎麼用了!Git常用指令

Git常用指令

Git指令 含義
init 将本地工程初始化為本地倉庫,納入版本控制
clone 從遠端克隆倉庫
add 将工作區修改儲存到暫存區
status 檢視暫存區(green)和工作區(red)的修改
commit 将修改送出到本地倉庫
push 将本地目前分支的送出推送到遠端倉庫
log 檢視送出的日志
reset 将送出回退到某一次送出時的狀态
branch 分支的新增、浏覽、删除等,不能切換分支
checkout 檢視目前分支狀态,切換分支
merge 合并分支
diff 檢視工作區的修改
普通指令 含義

rm -rf [file/dir]

删除檔案或檔案夾

rm -rf .git

根目錄執行,删除倉庫

exit

退出 git bash

clear

清空 git bash 界面

init

将本地工程初始化為本地倉庫,納入版本控制

git init
           

clone

從遠端克隆倉庫

git clone URL

例:
git clone [email protected]:leiyu1997/Blogs.git
           

URL有兩種形式:

  • http格式,如

    https://github.com/leiyu1997/Blogs.git

    • 在推送的時候,這種形式clone下來的倉庫需要每次校驗使用者名和密碼,不實用
  • ssh格式,如

    [email protected]hub.com:leiyu1997/Blogs.git

    • 在推送的時候,如果配置了ssh keys,就不需要驗證使用者名和密碼了,比較友善

add

将工作區修改儲存到暫存區

  • git add [file]

    • add指定檔案,在

      git bash

      中可以用TAB鍵選擇檔案
  • git add .

    • add目前目錄及其子目錄的所有檔案
  • git add --all

    • add所有檔案(不管在哪個目錄下執行,都會add整個倉庫的所有修改)

在根目錄下,

git add .

git add --all

沒有差別,隻有不是根目錄的情況下有差別

status

檢視暫存區(green)和工作區(red)的修改

git status
           
  • 綠色代表已經添加(add)到暫存區(index)
  • 而紅色表示還在工作空間(workspace)中
  • 已經送出(commit)已經到repo裡的,檢視不到狀态
Git常用指令,終于知道reset怎麼用了!Git常用指令

commit

将修改送出到本地倉庫

  • git commit -m [memo]

    将暫存區的修改送出到本地倉庫,memo為送出的備注
  • git commit -am [memo]

    将暫存區的修改以及工作區已加入版本控制的檔案修改送出到本地倉庫,memo為送出的備注

push

将本地目前分支的送出推送到遠端倉庫

git push
           

log

檢視送出的日志,按Q退出,可選擇檢視的分支

git log [branch]
           
指令 含義

git log

什麼都不加預設檢視本地目前分支的日志

git log [branch]

加上分支名檢視要檢視的分支的日志

git log origin/HEAD

檢視遠端目前分支的日志

git log origin/[branch]

檢視其他遠端分支的日志

git log --oneline

加上

--oneline

展示縮略日志
Git常用指令,終于知道reset怎麼用了!Git常用指令

reset

重新設定head指針指向的commit記錄,即可以将送出回退到某一次送出時的狀态

git reset [--soft]|[--mixed]|[--hard] <commitID>
           

reset有三個參數:

指令 影響暫存區 影響工作區 含義

git reset --soft <commitID>

N N 回到指定commit的狀态,暫存區和工作區的修改都不會受到影響

git reset --mixed <commitID>

Y N

回到指定commit的狀态,暫存區的修改會回到工作區。

–mixed是預設參數,即不加參數就預設為–mixed

git reset --hard <commitID>

Y Y 回到指定commit的狀态,暫存區和工作區的修改都會被删除

從之前的Git基本概念的了解中我們知道,head其實就是一個指向最新commit的指針,我們從git log的日志中也可以看到,最新的commit右邊有(head->master)表示head目前是master分支,并且指向這個commit。

Git常用指令,終于知道reset怎麼用了!Git常用指令

由此,我們也可以在使用commitID的地方用HEAD代替:

  • git reset head

    • 回退到最新的commitid,暫存區的修改會回到工作區
    • 既然是回到最新的commit,那麼

      git reset --soft head

      便沒什麼意義了,因為他什麼也沒改
  • git reset head^

    回退到最新送出的上一次送出
  • git reset head^^

    回退到最新送出的上一次的上一次送出,往後以此類推
  • git reset head~0

    回退到最新送出
  • git reset head~1

    回退到最新送出的上一次送出,往下依次類推

branch

分支的新增、浏覽、删除等,不能切換分支

  • git branch

    浏覽本地分支(被

    '*'

    标記的分支為目前本地主分支)
  • git branch <branch>

    建立新的本地分支,本地主分支不變
    Git常用指令,終于知道reset怎麼用了!Git常用指令
  • git branch <branch> <commitID>

    基于某一分支的一個commitID建立新分支
  • git branch -a

    浏覽本地(green/white)和遠端分支(red)
    Git常用指令,終于知道reset怎麼用了!Git常用指令
  • git branch -d <branch>

    删除本地分支
    Git常用指令,終于知道reset怎麼用了!Git常用指令

checkout

檢視目前分支狀态,切換分支

注:工作區和暫存區的修改會随着分支的切換在不同分支間移動,而已送出的修改則不會随着分支移動

  • git checkout

    檢視目前分支狀态
    Git常用指令,終于知道reset怎麼用了!Git常用指令
  • git checkout <branch>

    切換到branch分支
  • git checkout -b <branch>

    建立branch分支并切換到該分支(如果branch分支已經被建立,那麼該語句将報錯)
  • git checkout -B <branch>

    強制建立branch分支并切換到該分支(如果branch分支已經建立,該指令會将原來的分支強制覆寫)

merge

合并分支

要将B分支的代碼合并到A分支上,要先将head指向A分支,然後執行合并B的操作,這樣,B中的修改就合并到A上了

git checkout A
git merge B
           

diff

檢視工作區的修改

git diff
           
Git常用指令,終于知道reset怎麼用了!Git常用指令