jinzhe

jinzhe

github
email

Git 進階

rebase: 重設基礎點#

將當前的branch的基礎點移動到目標分支。這麼做的好處是主幹master明確。

git rebase <目標分>

不過rebase之後 master 並沒有跟隨過去,需要再合併一下:

git checkout master
git merge <剛剛的分>

這樣 master 就和分支合併了。

剛剛的提交提錯了,想要修改怎麼辦?#

文件修改好之後使用 --amend,這會產生一個新的commit並替換掉最後一個commit

git add 文件
git commit --amend -m 說明

錯了的是倒數第二個 commit,不是最後一個 commit,還能修改嗎?#

當然可以,這裡可使用交互式rebase,參數:-i

git rebase -i HEAD^^

這裡的^^意思是後退幾個commit,數量為^的數量,也可以寫成~2,數字代表後退的數量。

回車之後,我們發現進入到了一個可編輯的頁面,值得注意的是,上面的commit排序是倒序的,我們可以看到每個commit前面有一個pick,我們按i進入編輯,把想要重新修改的 commit 前面的pick改成edit,退出界面之後我們可以看到狀態就是在當前的commit上了,修改完成之後是否使用--amend提交,成功之後我們可以通過git rebase --continue來跳過不需要修改的commit,整個過程就結束了。

diff: 對比#

用來對比修改。

git diff //對比工作區和暫存區
git diff --staged // 對比暫存區和上一次提交
git diff HEAD // 對比工作區和上一次提交

想要暫存工作區?#

暫存並清空工作目錄。

git stash

Warning

-git stash並不會暫存你未追蹤的文件,假如說你新建了一個文件,你還沒有來得及addstash,這個文件並不會存起來,想要把這些文件一起暫存使用-u
- 恢復文件請使用git stash pop命令。

想要回滾 commit?#

reset可以重置HEADbranch的位置

  git reset <分支名或SHA-1>
  • --mixed 默認,把工作區和暫存區全部保存為工作區
  • --hard:不保留工作區,你的工作區會被清空!!
  • --soft:保留工作區和暫存區
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。