Git常用命令

2022-06-05 20:30:09 字數 3985 閱讀 4231

git重要概念

master head

每次提交,git都把它們串成一條時間線,這條時間線就是乙個分支。在git裡,有個分支叫主分支,即master分支。head嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,head指向的就是當前分支。

一開始的時候,master分支是一條線,git用master指向最新的提交,再用head指向master,就能確定當前分支,以及當前分支的提交點。

每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長:

當我們建立新的分支,例如dev時,git新建了乙個指標叫dev,指向master相同的提交,再把head指向dev,就表示當前分支在dev上。

從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次後,dev指標往前移動一步,而master指標不變。

假如我們在dev上的工作完成了,就可以把dev合併到master上。git怎麼合併呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合併。

合併完分支後,甚至可以刪除dev分支。刪除dev分支就是把dev指標給刪掉,刪掉後,我們就剩下了一條master分支。

工作區,暫存區

•工作區workspace:就是你在電腦裡能看到的目錄,即你**放的那個資料夾。即時性強,對檔案的所有更改都會立刻提現在這裡。

•版本庫:工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。

•暫存區 index / stage:git add以後,當前對檔案的更改會儲存到這個區

•本地倉庫repository:git commit以後,當前暫存區裡對檔案的更改會提交到本地倉庫

•遠端倉庫remote:遠端倉庫名一般叫origin。git push以後,本地倉庫裡優先於遠端倉庫的commit會被push到遠端倉庫

初始化

初始化引數

$ git config --global user.name "你的名字"

$ git config --global user.email "你的郵箱位址"

因為git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和email位址。

注意git config命令的--global引數,用了這個引數,表示你這台機器上所有的git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的使用者名稱和email位址。

初始化本地倉庫

$ git init

ssh key生成

$ ssh-keygen -t rsa -c "你的郵箱位址"

clone**

// 轉殖master分支

$ git clone 《版本庫的**》

// 指定轉殖的分支名

$ git clone -b 《分支名》 《版本庫的**》

.gitignore生效辦法

// 先把本地快取刪除(改變成未track狀態,即檔案從暫存區撤回到工作區)

$ git rm -r --cached

//刪除工作區和暫存區都追蹤的檔案

$ git rm -f

// 然後再提交

$ git add (增加檔案追蹤,即檔案從工作區新增到暫存區)

$ git commit -m 'update .gitignore'  (檔案從暫存區新增到本地倉庫)  # -m 是記錄這次提交的message

$git mv  -m 'message'  直接更改檔名

git diff    預設比對工作區和暫存區的差異

git diff --cached    預設比對暫存區和本地倉庫差異

檢視各種狀態

// 檢視當前狀態(分支名,有哪些改動,有哪些衝突,工作區暫存區中的內容,幾個commit等等)

$ git status

// 檢視本地倉庫的提交歷史

$ git log

// 檢視本地倉庫的提交歷史,簡潔版

$ git log --pretty=oneline

$git log --oneline

$git log -p

$git log -l

// 檢視命令歷史

$ git reflog

分支

// 檢視分支:

$ git branch -a

// 建立本地分支:

$ git branch 《分支名》

// 切換本地分支:

$ git checkout 《分支名》

// 建立+切換本地分支:

$ git checkout -b

// 合併某分支到當前分支:

$ git merge 《要合併的分支》

// 將本地分支推送到遠端

$ git push origin 《要推送的本地分支名》

// 以遠端分支為基礎,建乙個本地分支

$ git checkout -b 《本地分支名》 origin/《遠端分支名》

// 刪除本地分支:

$ git branch -d 《本地分支名》

// 刪除遠端分支。將本地空分支推送到遠端分支,相當於刪除遠端分支

$ git push origin  :《要刪除的遠端分支名》

更新和提交**

乙個新的檔案,或改動.剛開始只存在你的工作區。當你使用git add的時候,git就會快取這個改動並且跟蹤。當你使用git commit的時候就會把你的改動提交到倉庫裡。

// 快取所有改動

$ git add --all

// 快取單個檔案的改動

$ git add 《該檔案的檔名,包含路徑》

// 提交至本地倉庫

$ git commit -m 《提交備註》

// 更新本地**

$ git pull origin 《分支名》

// 將本地commit推送至遠端

$ git push orign 《分支名》

撤銷

// 撤銷工作區某個檔案的更改

$ git checkout [file]

// 撤銷工作區所有檔案的更改

$ git checkout .

// 重置暫存區的指定檔案,與上一次commit保持一致。但更改並沒有消失,而是更改打回工作區

$ git reset [file]

// 重置暫存區與工作區,與上一次commit保持一致。(即修改工作區、暫存區和本地倉庫)

$ git reset --hard 《當前分支名》

//僅僅重置本地倉庫,不會影響工作區和暫存區

$git reset --soft

//重置了本地倉庫和暫存區,不影響工作區

git review

**評審使用gerrit系統,git中使用git review 《分支名》(預設是master) 命令執行review操作。

標籤

標籤是指向一次commit提交,是乙個里程碑式的標籤,回滾打標籤直接加標籤號,不需要加唯一字串

//新增標籤

$git tag  

$git tag -a -m 'something' 

//刪除標籤

$git tag -d 

//檢視標籤

$git show

規則

•提交reivew之前pull遠端**,保證提交以前是最新**,有衝突需要本地合併處理。

•乙個單一的功能的變更放入乙個commit中,提交一次reivew。

特殊情況

•review沒有通過怎麼辦?

先回到要修改的那個commit

$ git reset --soft  《要修改的那個commit的id>

繼續修改你要改的檔案。修改後add快取檔案,並執行

$ git commit --amend

常用命令 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...