git常用指令
初始化倉庫
- 建立倉庫 對現有的項目進行管理,進入該項目目錄并輸入
git init
ps:該指令将建立.git目錄,但不會主動将現有項目中的檔案納入管理(需要自行添加);
- 克隆倉庫
git clone https://github.com/libgit2/libgit2
檔案的四種狀态
-
未跟蹤 untracked
通過以下操作到達未跟蹤狀态:
建立檔案 vi aaa 從索引區删除檔案 git rm
-
未修改 unmodified
以下操作到達未修改狀态:
git commit
-
已修改 modified
到達已修改狀态:
vi aaa
- 已暫存 staged
添加 git add
檢視目前狀态
- 目前狀态
git status
- 狀态簡覽
git status -s
PS: ‘MM’ 标記:左邊M:修改并放入暫存區; 右邊M:修改了還未放入暫存區
- 檢視尚未暫存的差異
git diff
- 檢視已暫存的将要添加到下次送出裡的内容
git diff --staged
三個工作區域
- Git倉庫
- 工作目錄
- 暫存區域
基本的 Git 工作流程
- 在工作目錄中修改檔案。
vi aaa
- 暫存檔案,将檔案的快照放入暫存區域。
git add .
- 送出更新,找到暫存區域的檔案,将快照永久性存儲到 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
- 取消暫存
将readme檔案從暫存狀态更改為未跟蹤狀态git reset HEAD 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合并到目前的分支
- 遠端資料拉取并合并到目前目錄:
自動到遠端origin的跟蹤分支上拉取并合并資料git pull origin
- 推送到遠端倉庫
推送本地的 serverfix 分支,将其作為遠端倉庫的 serverfix 分支git push origin master git push origin 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