git 常用命令

2023-01-22 02:50:46 字數 4458 閱讀 8200

# 常用命令

- 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

```[email protected] 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

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

```[email protected] mingw64 /f/git (master)

$ git checkout -b fenzhi

switched to a new branch 'fenzhi'

[email protected] mingw64 /f/git (fenzhi)

$ git branch

* fenzhi

master

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

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

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

```[email protected] mingw64 /f/git (fenzhi)

$ git checkout master

switched to branch 'master'

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

[email protected] 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常用命令的使用

1.touch readme.md 新建一個資料夾,在資料夾下右鍵bash出現命令列,輸入這行命令建立一個readme檔案2.git init 把當前資料夾變成一個git倉庫3.git add readme.md 新增檔案到倉庫 這裡只新增了一個readme檔案 git add a 新增所有檔案到本...

Git命令 git常用命令

一 git 狀態轉換圖 其中 untrack files 是指尚未被git所管理的檔案 changed but not updated 是指檔案被git管理,並且發生了改變,但改動還沒被git管理 這兩種狀態,都可以看成是改動還沒被git管理的狀態,我們這裡稱unstage狀態。staging是co...

git常用命令

git branch 顯示當前所在的分支,以及目前本地所有分支 前面有 標註的是當前所在分支 git branch 建立新的分支 git checkout b 建立新的分支並且切換到新分支上 git checkout 切換到新的分支上 此命令也可以用於切換到本地庫沒有,而遠端庫有的分支上 git s...