史上最全最清晰git命令大全

初始化倉庫:Git init
查看隱藏文件:ls -al
查看git配置:git config
倉庫級(全局)修改用戶名:git config --local(global) user.name ‘chuangyv’
倉庫級(全局)修改用戶郵箱: git config --local(global) user.email ‘[email protected]
倉庫級(全局)刪除用戶名:git config --local(global) --unset user.name
倉庫級(全局)刪除用戶郵箱:git config --local(global) --unset user.email
更新所有文件的用戶名和郵箱:git commit --amend --reset-author
查看所有配置信息:git config --list
查看用戶名配置:git config user.name
查看用戶郵箱配置:git config user.email
將文件狀態加入git暫存區:git add (git add . 會把當前目錄下所以文件加入暫存區)
回到文件未修改狀態(丟棄掉新增的相對於暫存區最後一次文件提交的內容):git checkout –
從git暫存區移除文件:git rm --cached || git reset head
將暫存區文件提交:git commit (然後會彈出一個界面進入編輯模式輸入本次提交的註釋然後保存即可,或者可以使用-m參數直接在後面加註釋如:git commit -m ‘註釋’ -am註釋的話用於添加入暫存區並提交,但對於新增文件不適用。)
查看歷史提交記錄:git log (參數- 2可以讓他只顯示前2條記錄)
查看歷史操作記錄:git relog (常用於版本回退後的歷史查看。)
刪除文件:git rm (刪除後要提交更改)
重命名文件:git mv
修正上一次消息提交的註釋:git commit --amend -m ‘提交註釋’
查看文件的修改歷史:git blame
添加別名:git config --global alias.<別名> <命令名> (命令名如何過長的話用’’號括起來,外部命令的話命令名前面加!號。不加的話默認git會在你的別名命令執行前面加上git)

新建標籤:git tag -a <標籤名> -m <註釋>
查看標籤:git show <標籤名>
刪除標籤:git tag -d <標籤名>

查看倉庫所有分支:git branch (-av參數可以查看遠程分支)
新建分支:git branch <分支名> (新建分支並切換到該分支用git checkout -b <分支名>)
切換分支:git checkout <分支名>
刪除分支:git branch -d <分支名> (如果分支未合併的話刪除得用-D)
合併分支:git merge <分支名>
分支改名:git branch -m <原分支名> <更改的分支名>

比較暫存區與工作區文件之間的差異:git diff
比較最新的提交與工作區文件之間的差異:git diff HEAD
比較最新的提交與暫存區文件之間的差異:git diff -cached

回退版本第二種(切換到此節點後爲處於遊離的commit結點狀態。新做出的commit結點更改也會處於遊離狀態需要用新增分支來保存):git checkout <commit_id>

在這裏插入圖片描述
保存當前文件更改的狀態(工作現場)到棧中(常用於當代碼未開發完成卻需要切換分支時使用):git stash save ‘註釋’
查看工作現場:git stash list
恢復工作現場:git stash apply(恢復最近的一條,恢復後stash中對應的內容不會被刪除)
git stash pop(恢復最近的一條,恢復後stash中對應的內容會被刪除)
git stash apply stash@{序號}
刪除工作現場: git stash drop stash@{序號}
在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

Gitlab
Push:推送 pull:拉取==fetch+merge
使用SHH密鑰綁定遠程倉庫:
添加遠程倉庫地址:git remote add origin <遠程倉庫地址>
生成公私鑰:shh-keygen
在這裏插入圖片描述

拿到 id_ras.pub中的公鑰。添加到遠程倉庫中、賦予可寫的權限。
在這裏插入圖片描述
在這裏插入圖片描述
查看遠程倉庫連接(成功的話則表示綁定成功): git remote show origin

推送:git push (底層實際命令是git push origin <本地分支名>:<遠程分支名> 默認使用同名)
拉取遠程倉庫地址並強行合併:git pull origin master --allow-unrelated-histories
推送master到遠程倉庫並綁定:git push -u origin master
向遠程推送並創建該分支:git push --set-upstream origin <分支名> || git push -u origin <分支名>
新建本地分支並與遠程的新分支相關聯(常用於遠程有新的分支創建並拉取了的情況下本地沒有與遠程分支對應的本地分支):git checkout -b <本地分支名> <origin/遠程分支名>
(git branch av查看遠程分支。例子:git checkout -b text origin/text) || git checkout --track <origin/遠程分支名> (該命令創建的分支名默認與遠程分支名相同)
刪除遠程分支:git push origin :<遠程分支名> (記得冒號前面有空格。意思是將空分支傳遞給遠程的某個分支,也就是刪除。) || git push origin --delete <遠程分支名>
重命名遠程分支(只能先刪除遠程分支。然後再在本地更改分支名推送到遠程):
推送本地標籤到遠程:git push origin <標籤名> (多個標籤名空格分隔) || git push origin --tags (把本地未推送到遠程的標籤全部推送到遠程)
拉取遠程標籤(也可以直接git pull所有):git fetch origin tag <遠程標籤名>
刪除遠程標籤:git push origin :refs/tags/<標籤名> || git push origin --delete tag <遠程標籤名>
更新遠程分支跟本地分支的對應關係(常用於遠程分支被刪除而本地分支還存留的情況):git remote prune origin
查看遠程分支的信息:git log origin/<分支名>

子模塊(子倉庫)
第一種做法 使用submodule (不推薦):
給當前倉庫創建子倉庫(創建完後會將對應遠程倉庫引入目錄名中,該目錄自動創建。接着在父倉庫使用git add和git pull將這些操作推送到遠程):git submodule add <遠程倉庫地址> <目錄名>
更新所有子倉庫(單獨更新子倉庫的話進入對應的子倉庫目錄進行git pull即可):git submodule foreach git pull (更新完後父倉庫會提示子倉庫有修改。進行add和pull即可)

第二種做法 使用subTree(推薦):
創建遠程連接:git remote add <遠程連接名> <遠程倉庫地址>
拉取遠程倉庫並作爲某主倉庫的子倉庫(最後記得git push將這些操作提交到遠程):git subtree add --prefix=<子倉庫目錄名> subtree-origin master (可以在最後加上–squash參數啓動壓縮策略,會將子倉庫的多次提交結點合併到master上成一個提交,如果決定使用的話那麼接下來子倉庫所有的拉取操作都要用該參數不然會出現問題)
更新拉取子倉庫(最後記得git push將該操作提交到遠程):git subtree pull --prefix=<子倉庫目錄名> subtree-origin master (記得判斷要不要加–squash參數)
更新推送子倉庫(最後記得git push將該操作提交到遠程):git subtree push --prefix=<子倉庫目錄名> subtree-origin master(這裏不用–squash參數)

克隆有子模塊的遠程倉庫(submodule)
第一種做法:
克隆遠程倉庫(如果有子倉庫的話子倉庫會爲空。需要你去初始化):git clone <倉庫地址>
初始化子倉庫:git submodule init
更新所有子倉庫(進入子倉庫後默認會進入最新的commit結點。這時候可以在子倉庫中用git checkout master切換到主分支):git submodule update --recursive
第二種做法:
克隆遠程倉庫(會自動遍歷子模塊並初始化):git clone <倉庫地址> --recursive

刪除遠程倉庫的子模塊(submodule)
從暫存區中移除目錄:git rm --cached <子倉庫名>
刪除子倉庫:rm -rf <子倉庫目錄> && git add . && git commit -m “註釋” && git push
刪除對應的子模塊文件(文件在根目錄下):rm .gitmodules && git add . && git commit -m “註釋” && git push

Rebase用法(不推薦。跟merge相似)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章