天天看點

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

Git 教程學習網址

https://www.liaoxuefeng.com/wiki/896043488029600

https://www.yiibai.com/git/

目錄
  • git status
  • git diff
  • git add
  • git commit
  • git pull
  • git push
  • git log
  • git reset 回退最近一次commit的内容等操作
  • Git 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

    使用場景:假如現在手中的 Bug 還沒有解決完,而上邊又派了一個新的 Bug,而這個新 Bug 又比較急着解決,可是之前的 Bug 還沒有解決完而不能送出。該怎麼辦?

執行 $ git status 指令,目前狀态,檢視是否有修改内容,修改了哪些檔案

沒有tracked的檔案分為兩類:一是已經被放在工作目錄下但是還沒有執行 git add 的,另一類是一些編譯了的程式檔案(如.pyc, .obj, .exe等)。當這些不想add的檔案一多起來,git status的輸出簡直沒法看

基于這個原因,Git 讓我們能在一個特殊的檔案.gitignore中把要忽略的檔案放在其中,每一個想忽略的檔案應該獨占一行,*這個符号可以作為通配符使用。例如在項目根目錄下的.gitignore檔案中加入下面内容能阻止.pyc和.tmp檔案出現在git status中

在每次執行 git commit之前先使用git status檢查檔案狀态是一個很好的習慣,
這樣能防止你不小心送出了您不想送出的東西。
           

目前無修改内容

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

目前有修改内容

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git diff 檔案名 指令,檢視修改了檔案的哪些内容

$ git diff,此指令比較的是工作目錄(Working tree)和暫存區域快照(index)之間的差異
https://www.yiibai.com/git/git_diff.html
           

目前狀态,檢視修改内容,修改了哪些檔案

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

檢視指定檔案的修改内容

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作
//以下是一些示例
git diff <file> # 比較目前檔案和暫存區檔案差異 git diff

git diff <id1><id1><id2> # 比較兩次送出之間的差異

git diff <branch1> <branch2> # 在兩個分支之間比較
git diff --staged # 比較暫存區和版本庫差異

git diff --cached # 比較暫存區和版本庫差異

git diff --stat # 僅僅比較統計資訊
           

将新添加的檔案送出到 git 遠端庫

執行 $ git add . 指令(沒看錯,是有個點),将新内容添加到索引庫(或叫“緩存區”)

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git commit -m ‘送出内容的資訊說明’ 指令,将新内容送出到 git 本地倉庫

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git status 指令,已經将新内容送出到本地倉庫

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git pull 指令,從遠端倉庫 pull 下來别人的新增送出内容

遠端倉庫,沒有别人新的送出
           
Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作
遠端倉庫,有别人新的送出,merge 是輸入的送出内容資訊說明
           
Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

按下 “i” 鍵,指令窗變成可編輯狀态

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

此時輸入 merge 内容的資訊說明,注意:符号 # 後面的内容會被忽略,使用資訊說明前面不要使用 #

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

按 “Esc” 鍵,指令窗退出可編輯狀态

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

點選底部(之前顯示 “-- 插入 --” 的地方)輸入 :wq,按下回車,儲存 merge 内容并退出 merge 界面,如果輸入的是 :q,則會不儲存 merge 内容并退出 merge 界面

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

沒有新的更新

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

有新的更新,并且 merge 成功

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git push 指令,将本地的新增内容或修改内容,送出到遠端倉庫

送出成功

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git log 指令,檢視 log 記錄,merge 内容和新增或修改内容,已經存在

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git reset 指令,用于将目前HEAD複位到指定狀态

現在本地沒有修改内容

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

回退最近一次commit的内容,将最近一次commit内容回退到未commit之前的狀态,既保留修改内容

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

回退到上一次送出,既保留修改内容

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

回退最近一次add的内容,将add後的内容回退到未add之前的狀态

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

至此、Over

Git 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

使用場景->

假如現在手中的 Bug 還沒有解決完,而上邊又派了一個新的 Bug,而這個新 Bug 又比較急着解決,可是之前的 Bug 還沒有解決完而不能送出。該怎麼辦?

解決方法

在其他分支上另開爐竈解決
  1. 首先,将正在解決的 Bug 的目前分支 stash (儲存)起來
因為目前的分支 temp 最初也是從master 分支上衍生出來的。而此時你要再從該分支上切換到主分支。那麼你需要先把 temp 分支上的改動送出後才能切換,但是 temp 分支上還沒有完成全部的修改,你不想送出。此時你就要選擇 stash 你在目前分支上改動的卻沒有送出commit的内容。

目前分支有修改(modified)

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git stash 指令,将目前分支修改的内容 stash 起來,stash id 為 4240c0c

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git status list 指令,檢視 stash 清單,會看到已經剛才的修改已存儲,即 [email protected]{0},id 為 4240c0c

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git status 指令,顯示沒有東西需要送出,這個時候你就可以切換到其他分支了

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作
  1. 然後,切換到其他分支或者建立分支來修改新的 Bug

執行 $ git branch bug001 指令,建立一個分支 bug001,用于解決新 Bug

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git branch 指令,檢視一下,已經建立了新分支 bug001,但仍處于 temp 分支

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git checkout bug001 指令,切換新分支 bug001

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git branch 指令,檢視一下,已經切換到了新分支 bug001

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作
  1. 修複完緊急的 Bug 後,就可以切回之前的分支,進行未完成的内容

執行 $ git checkout temp 指令,切回 temp 分支

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git stash list 指令,檢視 stash 清單,找到之前存儲的 id 為 4240c0c 的 stash 記錄

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git stash apply [email protected]{0} 指令,恢複 id 為 4240c0c 的 stash 的内容

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

從上圖可以看出,已經恢複之前修改但未完成的内容了

執行 $ git stash drop [email protected]{0} 指令,删除 stash 清單中已經恢複的 id 為 4240c0c 的 stash 記錄

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

執行 $ git stash list 指令,檢視 stash 清單,已将之前存儲的 id 為 4240c0c 的 stash 記錄删除

Git 常用指令記錄 - 如何在不送出目前分支修改的内容的情況下切換到其它分支進行操作

至此、Over