天天看點

git常用指令

$ git init

通過git init指令把這個目錄變成git可以管理的倉庫

$ git add file

add告訴git,把檔案添加到倉庫

$ git commit -m "送出說明"

commit告訴git,把檔案送出到倉庫

$ git status

status指令可以讓我們時刻掌握倉庫目前的狀态

$ git diff file

檢視更改内容

$ git log --pretty=oneline

log指令顯示從最近到最遠的送出日志

$ git reset --hard head^

回退一個版本 ,幾個^就是回退幾個版本

$ cat file

檢視檔案内容

$ git reset --hard commit id

回退到commit id的版本

git回退版本的速度非常快,在git内部有個指向目前版本的head指針,當你回退版本的時候,git隻是把指針指向的位置換了一下。

$ git reflog

reflog用來記錄你的每一次指令

git的版本庫裡存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有git為我們自動建立的第一個分支master,以及指向master的一個指針叫head。

我們把檔案往git版本庫裡添加的時候,是分兩步執行的

第一步是用git add把檔案添加進去,實際上就是把檔案修改添加到暫存區;

第二步是用git commit送出更改,實際上就是把暫存區的所有内容送出到目前分支。

因為我們建立git版本庫時,git自動為我們建立了唯一一個master分支,是以,現在,git commit就是往master分支上送出更改。

你可以簡單了解為,需要送出的檔案修改通通放到暫存區,然後,一次性送出暫存區的所有修改。

$ git checkout -- file

丢棄工作區的修改

$ git reset head file

reset指令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head時,表示最新的版本

$ git rm file

從版本庫中删除該檔案

如果删除錯了通過git checkout可以一鍵還原

$ ssh-keygen -t rsa -c github賬戶名

建立ssh key

$ git remote add origin github位址

将本地倉庫與遠端倉庫關聯,必須有擁有ssh key的公鑰

添加後,遠端庫的名字就是origin,這是git預設的叫法,也可以改成别的,但是origin這個名字一看就知道是遠端庫。

$ git push -u origin master

把本地庫的内容推送到遠端,用git push指令,實際上是把目前分支master推送到遠端。

$ git clone github位址

克隆 github位址的倉庫

$ git branch

檢視分支

建立分支

$ git checkout

切換分支

$ git checkout -b

建立+切換分支

$ git merge

合并某分支到目前分支

$ git branch -d

删除分支

$ git log --graph

檢視分支合并圖

通常,合并分支時,如果可能,git會用fast forward模式,但這種模式下,删除分支後,會丢掉分支資訊。

$ git merge --no-ff -m "merge with no-ff" dev

使用--no-ff參數,禁用fast forward

$ git stash

将分支儲存起來,等需要時恢複

$ git stash list

檢視儲存起來的分支

恢複儲存分支的兩種方法:

一是用git stash apply恢複,但是恢複後,stash内容并不删除,你需要用git stash drop來删除。

另一種方式是用git stash pop,恢複的同時把stash内容也删了:

$ git branch -d feature-vulcan

強行删除分支

$ git remote

檢視遠端庫的資訊

$ git remote -v

顯示更詳細的資訊

$ git push origin master

推送分支,就是把該分支上的所有本地送出推送到遠端庫。推送時,要指定本地分支,這樣,git就會把該分支推送到遠端庫對應的遠端分支上

$ git tag v1.0

目前版本打一個新标簽

$ git tag

檢視所有标簽

$ git tag v0.9 -m "version 0.9" commit id

給某一個送出的版本打标簽,-m說明文字

$ git show <标簽>

檢視标簽資訊

$ git tag -d <标簽>

删除标簽

$ git push origin <标簽>

推送标簽到遠端倉庫

$ git push origin --tags

将所有标簽全部推送到遠端倉庫

如果标簽已經推送到遠端,要删除遠端标簽先删除本地标簽

$ git push origin :refs/tags/<标簽>

然後從遠端删除