git進階--你可能不知道的很好用git功能


一、剛提交的代碼,發現需要微調一下

  剛剛最新提交了一段代碼,然后跟前端說,接口好了。過了2分鍾,前端跟你說,哎,兄弟,那個金額能不能返回整數,不要小數點。

  這個時候一般我們通常會修改一下之后,再提交一個版本。那么又過了2分鍾,前端又跑來說,哎,兄弟,那個日期能不能換個格式...

  正常我們又會修改下后再提交一個版本,那么就一些簡單的改動,我們就提交了好幾個版本,可以是可以,不過還有一個更加優雅和簡單的解決方法: commit --amend 

  "amend" 是「修正」的意思。在提交時,如果加上 --amend 參數,Git 不會在當前 commit 上增加 commit,而是會把當前 commit 里的內容和暫存區(stageing area)里的內容合並起來后創建一個新的 commit,用這個新的 commit 把當前 commit 替換掉。所以 commit --amend 做的事就是它的字面意思:對最新一條 commit 進行修正。

  具體地,當你把修改改完之后,直接運行:

git add .
git commit --amend

  之后會出現你之前一個提交的信息:

  你可以修改或保留它,然后保存退出就可以了。你的最新commit就被更新了,如下圖所示:

   

 

二、要修改的不是最新的commit,而是倒數第二個

  突然我先我們倒數第二個提交需要進行一些微小的調整,那么這時候我們就不能用上面那種處理方式了,不過也是有辦法的。

   rebase -i :是 rebase --interactive 的縮寫,意思為「交互式rebase」。

  

   git log 后我們發現是倒數第二個commit需要修改,那么此時我們可以運行:

   git rebase -i HEAD^^ ,就會跳出如下這個界面。

  

   這個編輯界面的最頂部,列出了將要「被 rebase」的所有 commits,也就是倒數第二個 commit 「modify testgit」和最新的 commit「mofify .gitignore」。需要注意,這個排列是正序的,舊的 commit 會排在上面,新的排在下面。

   此時,我們需要修改哪個commit,就可以把commit 之前的pick修改成edit ,然后就可以退出這個界面。

  上面的界面告訴我們,rebase過程已經停在需要修改的那個commit,然后我們可以進行修改了,修改完后:

git add .
git commit --amend

  上傳修改后,就可以運行:

 git rebase --continue 

  如果沒有沖突,那么就完美rebase了。

 

三、緊急情況:stash存儲

  當你正在敲着鍵盤,埋頭開發一個新功能時,突然有人跑過來跟你說,哎,兄弟,你之前開發的那個功能出現了一個bug,趕緊改一下,這時候你新分支功能才剛剛開了一個頭,如果直接commit一次肯定是可以的,不過有更好的處理辦法-- git stash .

   git stash 后會把你工作目錄的改動清空,然后存儲到另外一個地方。需要注意的是, git stash 會忽略那些沒有被track的文件,這時候需要加上參數-u,即 git stash -u 。

  當你把bug修復后,切回工作分支。然后:  

git stash pop

  你之前存儲的東西就回來了,是不是很方便?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM