git 常用命令

2021-08-30 08:53:55 字數 4449 閱讀 1953

# 常用命令

- git init

把當前目錄初始化為倉庫,多了乙個.git的目錄,這個目錄是git來跟蹤管理版本庫的

也不一定必須在空目錄下建立git倉庫,選擇乙個已經有東西的目錄也是可以的

- git add 檔名

告訴git,把檔案新增到倉庫

- git commit -m "這裡寫注釋"

告訴git,把檔案提交到倉庫,-m後面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的

- git status

git status命令可以讓我們時刻掌握倉庫當前的狀態

- git diff

檢視difference,顯示的格式正是unix通用的diff格式

- git log

命令顯示從最近到最遠的提交日誌,版本號是乙個sha1計算出來的乙個非常大的數字,用十六進製制表示

如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上--pretty=oneline引數,後面顯示commit時的備註

用==head==表示當前版本

上乙個版本就是head^,上上乙個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100

```li.tianzeng@litianzeng mingw64 /f/git (master)

$ git log

commit 9b378c6671d5d975d80e621f047140660f8be617 (head -> master)

author: ltz150

date: sun oct 28 16:38:53 2018 +0800

版本3commit 60f710a986e854da76fe71561c8bfd59979b00e5

author: ltz150

date: sun oct 28 16:37:54 2018 +0800

版本2commit b73a42c36aac49acc8eb9bfe4d0d29aba2fd093a

author: ltz150

date: sun oct 28 16:35:20 2018 +0800

版本1```

- git reset --hard head^ 恢復到上乙個版本

從最近的乙個commit恢復

上乙個版本就是head^,上上乙個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100

- git reset --hard 9b378(版本號前幾位) 恢復到指定版本

版本號沒必要寫全,前幾位就可以了,git會自動去找。當然也不能只寫前一兩位,因為git可能會找到多個版本號,就無法確定是哪乙個了。

- git reset head

可以把暫存區的修改撤銷掉(unstage),重新放回工作區

用head時,表示最新的版本

- git reflog

記錄你的每一次歷史命令

> git跟蹤並管理的是修改,而非檔案

- git checkout --檔名

把檔案在工作區的修改全部撤銷,這裡有兩種情況:

一種是檔案自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是檔案已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

總之,就是讓這個檔案回到最近一次git commit或git add時的狀態。

- git rm 檔名

刪除版本庫裡面的檔案,git checkout -- 檔名,把版本庫 的檔案恢復到工作區

- git remote add origin [email protected]:id/倉庫名.git

把乙個已有的本地倉庫與github關聯

- git push

把當前分支推送

- git clone github位址

從位址轉殖倉庫

> master和其他分支名字 才是指向提交的,,head指向的就是當前分支

- git checkout -b 分支名字

命令加上-b引數表示建立並切換,相當於以下兩條命令:

git branch 分支名 #建立分支

git checkout 分支名 #切換分支

- git branch

命令會列出所有分支,當前分支前面會標乙個*號。

```li.tianzeng@litianzeng mingw64 /f/git (master)

$ git checkout -b fenzhi

switched to a new branch 'fenzhi'

li.tianzeng@litianzeng mingw64 /f/git (fenzhi)

$ git branch

* fenzhi

master

```- git checkout master # 切換到主分支

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

當前在master上,指定fenzhi合併到mastershang

```li.tianzeng@litianzeng mingw64 /f/git (fenzhi)

$ git checkout master

switched to branch 'master'

your branch is up to date with 'origin/master'.

li.tianzeng@litianzeng mingw64 /f/git (master)

$ git merge fenzhi

updating a8baa73..49f9e1b

fast-forward

number.txt | 3 ++-

1 file changed, 2 insertions(+), 1 deletion(-)

```![2018-10-28-22-03-13.png](

- git branch -d fenzhi

git branch -d 強行刪除。

刪除fenzhi,建議合併後刪除

> 當git無法自動合併分支時,就必須首先解決衝突。解決衝突後,再提交,合併完成。

解決衝突就是把git合併失敗的檔案手動編輯為我們希望的內容,再提交。

用git log --graph命令可以看到分支合併圖。

# 分支策略

1. master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活

2. 幹活都在dev分支上,也就是說,dev分支是不穩定的

3. 每個人都有自己的分支,時不時地往dev分支上合併就可以了

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

![2018-10-28-22-41-48.png](

- git stash

把當前工作現場「儲藏」起來,等以後恢復現場後繼續工作

- git stash list

顯示儲存的工作是現場

- git remote

git remote -v顯示更詳細的資訊

要檢視遠端庫的資訊 ,遠端倉庫的預設名稱是origin

# 推送分支

- git push origin master

git push origin dev

> - master分支是主分支,因此要時刻與遠端同步;

> - dev分支是開發分支,團隊所有成員都需要在上面工作,所以也需要與遠端同步;

> - bug分支只用於在本地修復bug,就沒必要推到遠端了,除非老闆要看看你每週到底修復了幾個bug;

> - feature分支是否推到遠端,取決於你是否和你的小夥伴合作在上面開發。

- git checkout -b dev origin/dev

建立遠端origin的dev分支到本地,這個命令建立本地dev分支.

- git branch --set-upstream-to=origin/dev dev

本地dev分支與遠端origin/dev分支的鏈結,根據提示,設定dev和origin/dev的鏈結

- git rebase

rebase操作可以把本地未push的分叉提交歷史整理成直線;

rebase的目的是使得我們在檢視歷史提交的變化時更容易,因為分叉的提交需要三方對比。

# 標籤tag

- git tag 用於新建乙個標籤,預設為head,也可以指定乙個commit id;

- git tag -a -m "blablabla..."可以指定標籤資訊;

- git tag可以檢視所有標籤。

- git push origin 可以推送乙個本地標籤;

- git push origin --tags可以推送全部未推送過的本地標籤;

- git tag -d 可以刪除乙個本地標籤;

- git push origin :refs/tags/可以刪除乙個遠端標籤。

常用命令 Git 常用命令大全

安裝教程可參照 廖雪峰老師的安裝教程。git config 在git中,使用git config 命令來配置 git 的配置檔案,git配置級別主要有3類 1 倉庫級別 local 本地 git 倉庫級別配置檔案,作用於當前倉庫。優先順序最高 2 使用者級別 global,全域性配置檔案,作用於所有...

git 常用命令

檢視是否存在檔案需要上傳 git status git add git commit m 建立遠端倉庫 git remote add origin 116.255.146.153 ruby cd work daily project.git 更新git fetch 116.255.146.153 r...

git常用命令

詳細 1,git log p 命令來顯示每一次提交與其父節點提交內容之間快照的差異。2,為了檢視載入 staged 而並未提交 not committed 的內容差異,可以使用 git diff stage 命令 在git 1.6之前的版本中,使用 cached 適應情形 在執行git commit...