天天看點

git常用指令 GIT常用指令

目錄

GIT常用指令

GIT 最小配置

檢視GIT的配置

清除GIT的配置

本地基本操作

加塞臨時任務的處理

修改個人分支的曆史

檢視變更的曆史

分支與标簽

兩分支之間的內建

和遠端的互動

GIT常用指令

GIT 最小配置

某賬号下所有的GIT倉庫都有效

git config --global user.name '你的名字'

git config --global user.email '你的Email'

隻對目前GIT倉庫有效

git config --local user.name '你的名稱'

git config --local user.email '你的Email'

檢視GIT的配置

檢視global類型的配置項

git config --global --list

檢視隻作用于目前倉庫的配置項

git config --local --list

清除GIT的配置

清除global類型的配置項

git config --unset --global 某個配置項

清除某個倉庫的配置項

git config --unset --local 某個配置項

本地基本操作

檢視變更情況

git status

檢視目前工作在哪個分支上

git branch -v

切換到指定分支

git checkout 指定分支

把目前目錄及其子目錄下所有變更都加入到暫存區

git add .

把倉庫内所有變更都加入到暫存區

git add -A

把指定檔案添加到暫存區

git add 檔案1 檔案2 檔案3

建立正式的commit

git commit

比較某檔案工作區和暫存區的差異

git diff 某檔案

比較某檔案暫存區和HEAD的差異

git diff HEAD 某檔案

比較工作區和暫存區的所有差異

git diff

比較暫存區和HEAD的所有差異

git diff --cached

把工作區指定檔案恢複成和暫存區一樣

git checkout 檔案1 檔案2 檔案3

把暫存區和工作區所有檔案恢複成和HEAD一樣

git reset --hard

用difftool比較任意兩個commit的差異

git difftool 送出A 送出B

檢視哪些檔案沒被Git管控

git ls-files --others

加塞臨時任務的處理

把未處理完的變更先儲存的stash中

git stash

臨時任務處理完後繼續之前未完的工作

git stash pop

或者

git stash apply

pop 不保留 stash, apply保留 stash

檢視所有stash

git stash list

取回某次stash的變更

git stash pop stash @{數字n}

修改個人分支的曆史

修改最後一次commit

1) 在工作區修改檔案

2)

git add 要送出的檔案

3)

git commit --amend

修改中間的commit(代号x)

1)

git rebase -i X前面一個commit的id

2) 在工作區修改檔案

3)

git add 要送出的檔案

4)

git rebase --continue

後續可能需要處理沖突, 直到rebase結束

檢視變更的曆史

目前分支各個commit用一行顯示

git log --oneline

顯示就近的n個commit

git log -n

用圖示顯示所有分支的曆史

git log --oneline --graph --all

檢視涉及到某檔案變更的所有commit

git log 某檔案

某檔案各行最後修改對應的commit以及作者

git blame 某檔案

分支與标簽

基于目前分支建立新分支

git branch 新分支

基于指定分支建立新分支

git branch 新分支 某個commit的id

基于某個commit建立分支

git branch 新分支 某個commit的id

建立分支并切換到該分支

git checkout -b 新分支

列出本地分支

git branch -v

列出本地和遠端分支

git branch -av

列出遠端所有分支

git branch -rv

列出名稱符合某樣式的遠端分支

git branch -rv -l '某樣式'

git branch -rv -l '*main*'

安全删除本地某分支

git branch -d 拟删除分支

強行删除本地某分支

git branch -D 拟删除分支

删除已合并到main分支的所有本地分支

git branch --merged main | grep -v '^\*\| main' | xargs -n 1 git branch -d

删除遠端origin已不存在的所有本地分支

git remote prune origin

給commit打上标簽

git tag 标簽名 commit的id

兩分支之間的內建

把A分支合入到目前分支,且為merge建立commit

git merge A分支

把A分支和入到B分支, 且為merge建立commit

git merage A分支 B分支

把目前分支基于B分支做rebase,以便把B分支合入到目前分支

git rebase B分支

merge和rebase差別

(一股腦)使用

merge

指令合并分支,解決完沖突,執行

git add .

git commit -m'fix conflict'

。這個時候會産生一個commit。

(互動式)使用

rebase

指令合并分支,解決完沖突,執行

git add .

git rebase --continue

,不會産生額外的commit。這樣的好處是,‘幹淨’,分支上不會有無意義的解決分支的commit;壞處,如果合并的分支中存在多個

commit

,需要重複處理多次沖突。

把A分支基于B分支做rebase, 以便把B分支合入到A分支

git rebase B分支 A分支

用mergetool解決沖突

git mergetool

和遠端的互動

列出所有remote

git remote -v

增加remote

git remote add url位址

删除remote

git remote remove remote的名稱

改變remote的name

git remote rename 舊名稱 新名稱

把遠端所有分支和标簽的變更都拉取到本地

git fetch remote

把遠端分支的變更拉取到本地, 且merge到本地分支

git pull remote名稱 分支名

把本地分支push到遠端

git push remote名稱 分支名

删除遠端分支

git push remote --delete 遠端分支名

或者

git push remote: 遠端分支名

向遠端送出指定标簽

git push remote 标簽名

向遠端送出所有标簽

git push remote --tags

git