目錄
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