天天看點

git常用指令

git常用指令

初始化倉庫

  • 建立倉庫 對現有的項目進行管理,進入該項目目錄并輸入
    git init
               

ps:該指令将建立.git目錄,但不會主動将現有項目中的檔案納入管理(需要自行添加);

  • 克隆倉庫
    git clone https://github.com/libgit2/libgit2 
               

檔案的四種狀态

  1. 未跟蹤 untracked

    通過以下操作到達未跟蹤狀态:

    建立檔案 vi aaa
    從索引區删除檔案  git rm
               
  2. 未修改 unmodified

    以下操作到達未修改狀态:

    git commit
               
  3. 已修改 modified

    到達已修改狀态:

    vi aaa
               
  4. 已暫存 staged
    添加 git add
               

檢視目前狀态

  • 目前狀态
    git status
               
  • 狀态簡覽
    git status -s
               

PS: ‘MM’ 标記:左邊M:修改并放入暫存區; 右邊M:修改了還未放入暫存區

  • 檢視尚未暫存的差異
    git diff 
               
  • 檢視已暫存的将要添加到下次送出裡的内容
    git diff --staged
               

三個工作區域

  • Git倉庫
  • 工作目錄
  • 暫存區域

基本的 Git 工作流程

  1. 在工作目錄中修改檔案。
    vi aaa
               
  2. 暫存檔案,将檔案的快照放入暫存區域。
    git add .
               
  3. 送出更新,找到暫存區域的檔案,将快照永久性存儲到 Git 倉庫目錄。
    git commit -m "add file" aaa 
               
    已跟蹤的檔案修改,直接送出到庫中:
    git commit -a -m "update file aaa" aaa
               

移除檔案

  • 從暫存區中移除檔案(硬碟上也删除)
    git rm 
               
  • 從暫存區中移除檔案(硬碟上保留,即不再跟蹤此檔案)
    git rm --cached README 
               
  • 移動檔案
    git mv a b 
               

暫存區的操作

  • 送出暫存
    git commit -m "update what" 
               
  • 補充送出
    git commit --amend 
               
    最終隻會顯示成一個送出
  • 取消暫存
    git reset HEAD readme
               
    将readme檔案從暫存狀态更改為未跟蹤狀态
  • 回退到指定版本
    git reset --hard :commit_hash_id
               

檢視送出曆史

  • 檢視日志
    git log
               
  • 顯示最近兩次送出的内容差異
    git log -p -2 
               
  • 單行顯示
    $git log --pretty=oneline  
    $git log --oneline --decorate
    $git log --pretty=format:"%h - %an, %ar : %s"
      8029c4c - colin, 10 days ago : add redis_gallery_ad_impr
               
  • 僅檢視指定送出者的送出記錄
    $ git log --committer=colin
               

遠端倉庫操作

  • 檢視遠端倉庫
    git remote -v 
               
  • 更新本地

    遠端倉庫資料拉取(不自動合并到目前工作目錄):

    git fetch origin 
    git merge origin/serverfix 将origin/serverfix合并到目前的分支
               
  • 遠端資料拉取并合并到目前目錄:
    git pull origin
               
    自動到遠端origin的跟蹤分支上拉取并合并資料
  • 推送到遠端倉庫
    git push origin master
    git push origin serverfix:serverfix 
               
    推送本地的 serverfix 分支,将其作為遠端倉庫的 serverfix 分支

分支操作

建立分支

git branch testing
           

分支切換

切換到已存在的分支上(HEAD 就指向這個分支)

git checkout testing
           

建立并切換

基于目前目錄建立一個分支并切換工作區到新分支上:

git checkout -b iss53
           

建立一個基于遠端倉庫origin上的serverfix的分支:

git fetch origin
  git checkout -b serverfix origin/serverfix
  or:
  git checkout --track origin/serverfix
           

跟蹤分支

  • 設定跟蹤

    設定已有的本地分支跟蹤一個剛剛拉取下來的遠端分支,或者想要修改正在跟蹤的上遊分支:

    git branch -u origin/serverfix
               
  • 查詢跟蹤關系

    檢視設定的所有跟蹤分支

    git branch -vv
               

删除分支

  • 删除本地分支
    git branch -d hotfix
               
  • 删除遠端分支
    git push origin --delete serverfix
               

分支合并

  • 合并merge

    合并 iss53 分支到master 分支(ps:被合并的分支為目前工作區)

    git checkout master
    git merge iss53
               
  • 變基rebase

    變基是将一系列送出按照原有次序依次應用到另一分支上,而合并是把最終結果合在一起。

    git checkout experiment
    git rebase master
               

檢視目前分支清單

git branch
           

ref:《Pro Git 2.0》

Posted by: 大CC | 14MAY,2016

部落格:blog.me115.com [訂閱]

Github:大CC