Git 常用命令集

Git 常用命令集

個人使用git的一些總結,一下常用命令的互相搭配使用,能非常完美的處理好日常遇到的99%的情況(不敢說100%,得留點餘地)。
還有一些使用頻率非常低的指令沒有記錄,至少普通開發者非常不常用,以後可能會補充。
話不多說
首先需要先下載git這個還是要說一下的

1. 常用命令

1.1 最常用/版本對比/其他

git status 查看當前分支狀態
git reflog 查看每一次的命令,都做過什麼
git log 查看此分支完整的提交記錄,回車繼續看,q停止
git log --oneline 查看此分支簡略的提交記錄,只展示提交號和提交信息
git show 查看最近一次提交的具體代碼變化
git show <提交ID> 查看某次提交的具體代碼變化
git diff 查看當前代碼add後,會add哪些內容
git diff --staged 查看現在commit提交後,會提交哪些內容
git diff HEAD 查看當前代碼add並提交後,會提交哪些內容
git log --oneline --graph 圖形化展示合併歷史

1.2 初始化基本操作

git init 初始化倉庫,默認爲mast分支
git add -A 提交全部文件修改到緩存區
git add <具體某個文件路徑+全名> 提交某些文件到緩存區
git commit -m "<註釋>" 提交代碼到本地倉庫,並寫提交註釋
git commit –a -m "<新註釋>" 更改上次提交的註釋

1.3 分支操作

git branch 查看本地所有分支
git branch -r 查看遠程所有分支
git branch -a 查看本地和遠程所有分支
git merge <分支名> 合併分支
git merge --abort 合併分支出現衝突時,取消合併,一切回到合併前的狀態
git branch <新分支名> 基於當前分支,新建一個分支
git checkout --orphan <新分支名> 新建一個空分支(會保留之前分支的所有文件)
git branch -D <分支名> 刪除本地某個分支
git push <遠程庫名> :<分支名> 刪除遠程某個分支
git branch <新分支名稱> <提交ID> 從提交歷史恢復某個刪掉的某個分支
git branch -m <原分支名> <新分支名> 分支更名
git checkout <分支名> 切換到本地某個分支
git checkout <遠程庫名>/<分支名> 切換到線上某個分支
git checkout -b <新分支名> 把基於當前分支新建分支,並切換爲這個分支

1.4 推拉操作(push和pull)

git pull <遠程倉庫名> <遠程分支名> 拉取遠程倉庫的分支與本地當前分支合併
git pull <遠程倉庫名> <遠程分支名>:<本地分支名> 拉取遠程倉庫的分支與本地某個分支合併
git push <遠程倉庫名> <本地分支名> 推送本地某個分支到遠程與其對應的分支上,遠程沒有則會給遠程庫新建分支
git push <遠程倉庫名> <本地分支名>:<遠程分支名> 推送本地分支到遠程某個分支
git push <遠程倉庫名> :<遠程分支名> 刪除遠程某個分支
git push -f <同上的命令> 強制提交,覆蓋線上
git fetch 獲取線上最新版信息記錄,不合並,用法和pull類似(一個特殊的操作,比如多人開發分支,其他人提交後,自己看分支的時候,可能還知不道線上的分支已經比自己的新了,需要這個指令,來獲取一下線上的最新版本,會拉取,但不會合並,存在本地倉庫中)

1.5 查看具體文件版本區別(git diff)

git diff <文件名> 對比最近提交,和近近次提交的區別,不加文件名,則爲整體對比
git diff HEAD^ -- <文件名> 同上
git diff HEAD~<一個數字> -- <文件名> 上次提交和前第幾次提交作對比
git diff <提交ID> <文件名> 上次提交和某次提交作對比
git diff <文件名> 工作區與暫存區比較
git diff HEAD <文件名> 工作區與最近提交比較
git diff <本地分支名> <文件名> 當前分支的文件與其他分支的文件進行比較

1.6 回滾操作

注意,當回滾代碼時,resetrevert都可以使用,下面是兩個指令的區別
reset:真實硬性回滾,目標版本後面的提交記錄全部丟失了
revert:同樣回滾,但實際這個回滾操作,算是一個提交,目標版本後面的提交記錄也全部都有,而且會多一次提交,就是這次revert

--hard的功能:不加他,文件修改會保留,都會處於add之前的狀態;加上他,文件修改會被刪除,丟失掉

git <reset/revert> <--hard?> HEAD^ 回退到上次提交
git <reset/revert> <--hard?> <提交記錄> 回退到之前的某次提交
git <reset/revert> <--hard?> <某個分支> 回退到此分支的提交狀態,相當於複製分支過來
git reset <文件完整路徑+完整名>add過的某個文件撤銷到未add的狀態
git resetadd過的所有文件撤銷到未add的狀態
git checkout <文件完整路徑+完整名> 一個還沒有add的文件,撤銷修改
git checkout . 還沒有add的所有文件,撤銷修改

1.7 遠程庫和分支的鏈接操作

git remote -v 查看對應的遠程倉庫地址
git clone <遠程倉庫地址鏈接> 克隆某個遠程庫,默認庫名爲origin
git clone <遠程倉庫地址鏈接> <庫名> 克隆某個遠程庫,並自定庫名
git remote remove <遠程倉庫名> 和遠程的某個倉庫解除綁定關係
git remote add <遠程倉庫名> <遠程倉庫地址鏈接> 和某個遠程倉庫建立綁定關係
git push --set-upstream <遠程倉庫名> <遠程分支名> 當前分支和遠程某個分支建立綁定關係

1.8 儲藏操作(stash)

經常有這樣的事情發生,當你正在進行項目中某一部分的工作,裏面的東西處於一個比較雜亂的狀態。
而你想轉到其他分支上進行一些工作。
問題是,你不想提交進行了一半的工作,否則以後你無法回到這個工作點。
解決這個問題的辦法就是git stash命令。

git stash save <註釋信息> 當前分支提交到儲藏,插到儲藏序列的最前面(不包括新建文件)
git stash save -u <註釋信息> 同上,會包括新建文件,功能更強大
git stash list 查看所有儲藏中的工作
git stash drop <儲藏的名稱> 刪除對應的某個儲藏
git stash pop 取出儲藏中最後存入的工作狀態進行恢復,會刪除儲藏
git stash pop <儲藏對應的數字> 取出儲藏中對應的工作狀態進行恢復,會刪除儲藏
git stash apply 取出儲藏中最後存入的工作狀態進行恢復,注意,不會刪除儲藏
git stash apply <儲藏的名稱> 取出儲藏中對應的工作狀態進行恢復,注意,不會刪除儲藏
git stash branch <新分支名> <儲藏的名稱> 從儲藏中新建分支,會刪除儲藏
git stash clear 清空所有儲藏中的工作

1.9 標籤操作(tag)

tag 是什麼,雖然整個開發過程,每個提交都對應一個提交ID,回滾也比較方便,但總有一些重大意義的提交,比如從v0.91升級到了v1.0,這個v1.0是必須要單獨摘出來保存的,否則萬一出現回滾事故,導致提交記錄丟失呢?

雖然可以單獨新建分支保存,但分支的功能並不是用來做這個的。冗餘的分支在開發時也容易產生誤操作。

所以tag的用處就來了,他可以把某次提交後的項目,整個單獨複製拎出來,命名爲一個tag(可以以項目版本或打tag的時間來命名),可以寫註釋,存在tag列表中,與分支隔離開,除非專門命令操作,否則只要項目存在,他們就不會受到影響。

同時,可以使用tag快速回滾項目、基於tag新建分支等,在項目整體的管理上非常方便。

git tag 列出本倉庫中所有tag列表
git tag <tag名>' 基於最近的一次提交打tag(輕量tag,不推薦)
git tag -a <tag名> -m '<此tag的註釋>' 基於最近的一次提交打tag
git tag -a <tag名> <提交ID> -m '<此tag的註釋>' 基於某次提交打tag
git show <tag名> 查看此tag的tag信息
git tag -d <tag名> 刪除本地某個tag
git push origin :refs/tags/<tag名> 刪除遠程倉庫中的tag
git push <遠程倉庫名> <tag名>' 推送某個tag至某個遠程庫
git push <遠程倉庫名> --tags' 推送所有tag至某個遠程庫
git checkout -b <新分支名> <tag名>' 基於某個tag新建分支

2. .gitignore文件

在使用Git的過程中,有的文件比如日誌、臨時文件、編譯的中間文件等不要提交到代碼倉庫,這時就要設置相應的忽略規則,來忽略這些文件的提交。

沒錯就是.gitignore文件了。

此文件需要放在.git(默認是隱藏文件,是git的本地倉庫)同一目錄下

寫法如下:

node_modules/
dist/
*.map
npm-debug.log*
yarn-debug.log*
yarn-error.log*

這樣,當git add的時候,上面定義忽略的那些文件,就會被git忽略,發生了變化git也不會管。

然而有時候,是會出現意外的。

比如,git已經提交過了,這是後突然說,這裏面有個文件需要被忽略,然後我把這個文件寫到了.gitignore文件中。。。無效!這個文件仍然沒有被忽略!

這是就需要如下命令,來刪除此文件並忽略

git rm -r --cached <文件路徑+文件全名> 在git庫中刪除文件並停止追蹤,但實際文件還保留,只是忽略掉。

由此,方可。

3. 生成SSH公鑰

綁定一個遠程倉庫,有兩種方式:

  • 使用http鏈接的方式
  • 使用ssh加密鏈接的方式

如果遠程倉庫爲公開倉庫,則兩者在使用上,區別不大;
但如果是私密倉庫,則http方式,需要輸入用戶名和密碼登錄後,纔可建立聯繫,但這樣一來,需要把私密倉庫的賬號和密碼暴露,即使添加了項目團隊成員,如果成員的賬號密碼暴露,任何人在任何設備上,登錄賬號密碼,至少都能對項目進行拉取操作,所以就有了下面更合適的方式---ssh

ssh的話,則只需要本地設備,輸入一條git指令,生成一對公鑰和私鑰,然後把公鑰的內容,複製添加到遠程庫的設置中,讓遠程庫認識此設備,就想當於用戶填寫了賬號和密碼,好處是,這種方法在遠程庫的添加上,只認設備不認賬戶,這樣只用保證設備是安全的,倉庫就是安全的。

下面爲本地設備生成ssh

輸入ssh-keygen來生成ssh
window默認存放在C盤/用戶/<用戶名稱>/.ssh文件夾中
Mac默認存放在硬盤/用戶/<用戶名稱>/.ssh文件夾中
其中兩個文件,id_rsa.pub爲公鑰,需要打開復制其中的內容,粘貼到需要的網站中(另一個爲私鑰,切記保管好)

4. 設置用戶名、郵箱、登錄賬戶

git config user.name 查看設置的用戶名
git config user.email 查看設置的用戶郵箱
git config --global user.name <用戶名> 設置用戶名
git config --global user.email <郵箱> 設置用戶郵箱

修改用戶登錄信息

  • window

控制面板 -> 用戶賬戶 -> 管理 Windows 憑據,即可看到普通憑據中有git的賬戶信息,可編輯更改

  • Mac

鑰匙串訪問.app -> 右上角搜索git,即可看到,可編輯更改

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