天天看點

關于 Git 你所不知道的一些事

上周五我由于使用了git reset --hard 而使得我丢掉了我的送出(糟糕透頂),是以,我決定是時候重新學習一下git了。

這篇文章講的不是git基礎的一些東西,而是那些你不知道或者隻用過一兩次的東西。

從 reset --hard 中恢複送出

使用 git reflog 指令就好了.

(由 gittenberg 提供)

diff

如果你想檢視兩個分支之間有什麼不同之處,你隻需要這樣做:git diff branch1..branch2。

通過正規表達式比對送出資訊并顯示

使用 git show :/fixes 指令,你可以找到送出資訊中包含傳入的字元串(這個例子中是fixes)的最近的送出。

限制 git push 的預設行為

如果你運作git push,預設的行為是将所有的分支送出到遠端代碼庫。這可能會導緻很多問題,如果你不想這麼做,你可以:git config --global push.default tracking。

切換到一個分支 rebase 并 merge 到 master

可以這樣做:git rebase head feature && git rebase head @{-2}

git 儲存工作狀态

如果由于你的工作還沒有完成,但此時又有緊急的事找上你,你可以使用 git stash 來儲存這些修改,送出你緊急的任務,之後再用 git stash pop 恢複到你儲存時的狀态。

别名

你還在為一次又一次的輸入 checkout 而感到讨厭嗎?現在就去嘗試:git config --global alias.co checkout。你就可以通過:git co master 指令來切換到master了。

重命名一個本地分支

使用:git branch -m old-name new-name 你可以很容易的重命名一個本地分支。

搜尋作者名稱

你可以通過使用git log --author=matheus 來搜尋一個指定作者的送出記錄。

給git status 加上參數

大多數人僅使用git status,但是,你可以傳入參數來改變狀态顯示的方式。

使用git status -sb 你可以得到類似下面這樣的輸出: