(轉)Git常用終端命令

liangxingwei發表於2018-07-04

原文連結:Git常用終端命令-chenfanfang

寫在前面

Git想必大家都熟悉了,由於現在Git的管理工具用的的確很方便,估計大家都用Git管理工具了,所以真正能夠熟練用終端敲出常用的Git命令,想必沒有多少人(當然也包括我)。

我用Git比較無規律,都是混合使用的:終端Git命令(會一些常用的) + Xcode自帶Git管理工具 + SourceTree。具體會使用哪種方式,完全看心情和操作的熟練度。

最近閒來無事(等後臺哥們的介面),索性看了下常用的Git終端命令,順便做了下筆記與大家分享,當然也方便了以後自己的查閱。

本文Git常用命令知識點基本來自“廖雪峰”前輩的Git教程。若對Git沒有些許的瞭解,只看常用命令可能對大家的幫助不是太大,所以建議大家有空的時候花點時間去看下“廖雪峰 ”前輩的Git教程,通熟易懂,相信會有所收穫。

最後,若文章有什麼錯誤的地方,望評論指出。

git init

初始化一個Git倉庫:把某個目錄變成Git可以管理的倉庫

git add test.h

把檔案test.h新增到倉庫

git commit -m "新增了test.h檔案"

把檔案提交到倉庫。(git commit命令,-m後面輸入的是本次提交的說明)

git status

檢視工作區的狀態

git diff test.h

檢視test.h檔案修改了什麼(diff--->difference)

git log

顯示從最近到最遠的提交日誌。如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上--pretty=oneline引數

git reset --hard HEAD^

回到上一個版本

git reset --hard HEAD^^

回到上上個版本

git reset --hard HEAD~100

回到上100個版本

git reset --hard 791c95aa44cc5540d93a146d6d341e5d38936762

根據提交的版本號進行版本的回退

git reflog

檢視命令歷史,以便確定要回到未來的哪個版本。

git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況: 一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態; 一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。 總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。

git reset HEAD 檔案

例如: git reset HEAD readme.txt 可以把暫存區的修改撤銷掉(unstage),重新放回工作區。若要丟棄工作區的修改,還需要git checkout -- readme.txt git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用HEAD時,表示最新的版本。

git remote add origin git@...................

關聯一個遠端庫

git push

把當前分支推送到遠端

git push -u origin master

當遠端庫是空的,我們第一次推送master分支時,加上了-u引數,Git不但會把本地的master分支內容推送的遠端新的master分支,還會把本地的master分支和遠端的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。

git clone git@.............

克隆

git branch dev

建立一個名稱叫dev的分支

git checkout dev

當前的分支切換為dev分支

git checkout -b dev

建立一個dev分支,並且切換到dev分支(相當於是是前面兩句命令的合併)

git branch

列出所有分支,當前分支前面會標一個*號

git merge dev

把dev分支的工作成果合併到當前分支上、

git merge命令用於合併指定分支到當前分支

git branch -d dev

刪除dev分支

git branch -D dev

若dev分支還沒合併到所切出來的分支,則git branch -d dev將不能刪除dev分支,可以通過git branch -D dev強行刪除dev分支

git log --graph

檢視分支合併圖

git log --graph --pretty=oneline --abbrev-commit

git merge --no-ff -m "備註的資訊" dev

將dev分支合併到當前分支的時候強制禁用Fast forward模式

通常,合併分支時,如果可能,Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支資訊。 如果要強制禁用Fast forward模式,Git就會在merge時生成一個新的commit,這樣,從分支歷史上就可以看出分支資訊。

合併分支時,加上--no-ff 引數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward 合併就看不出來曾經做過合併。

git stash

可用來暫存當前正在進行的工作

git stash list

檢視已暫存列表

git stash apply

恢復工作現場,但是恢復後,stash內容並不刪除

git stash drop

刪除stash內容

git stash pop

恢復的同時把stash內容也刪了,相當於前面兩個命令的結合

git stash apply stash@{0}

恢復指定的stash

git remote

要檢視遠端庫的名稱

git remote -v

顯示更詳細的遠端庫資訊。顯示可以抓取和推送的origin的地址。如果沒有推送許可權,就看不到push的地址

git push origin 本地分支的名稱

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

git branch -r

檢視遠端分支

git branch -a

檢視所有分支(會顯示本地分支和遠端分支)

git fetch

個人粗淺的理解為將遠端所有的分支資訊拉取到本地

git checkout -b local-branchname origin/remote_branchname

將遠端分支對映到本地命名為local-branchname 的一分支(本地分支名稱最好和遠端分支名稱一致)

git branch --set-upstream dev origin/dev

指定本地dev分支與遠端origin/dev分支的連結

git tag

檢視所有標籤

git tag 標籤名稱

打標籤:預設標籤是打在最新提交的commit上的

git tag 標籤名稱 commit的版本號

例如:git tag v0.9 6224937 在制定的提交位置上打上標籤

git show 標籤名稱

檢視標籤資訊

git tag -a 我是標籤 -m "新增了標籤" 3628164

例如:git tag -a v0.1 -m "version 0.1 released" 3628164 建立帶有說明的標籤,用-a指定標籤名,-m指定說明文字。經測試 -a可以去掉,也就可以寫成 git tag 我是標籤 -m "新增了標籤" 3628164

git tag -d v0.1

刪除一個叫做 v0.1的本地標籤

git push origin :refs/tags/

刪除一個遠端標籤

git push origin 標籤名稱

推送某個標籤到遠端

git push origin --tags

一次性推送全部尚未推送到遠端的本地標籤

相關文章