關(guān)于Git你所不知道的一些事
上周五我由于使用了git reset --HARD <commit-id> 而使得我丟掉了我的提交(糟糕透頂),因此,我決定是時(shí)候重新學(xué)習(xí)一下git了。
這篇文章講的不是git基礎(chǔ)的一些東西,而是那些你不知道或者只用過(guò)一兩次的東西。
1、從 reset --HARD 中恢復(fù)提交
使用 git reflog 命令就好了. (由 Gittenberg 提供)
2、Diff
如果你想查看兩個(gè)分支之間有什么不同之處,你只需要這樣做:git diff branch1..branch2。
3、通過(guò)正則表達(dá)式匹配提交信息并顯示
使用 git show :/fixes 命令,你可以找到提交信息中包含傳入的字符串(這個(gè)例子中是fixes)的最近的提交。
4、限制 git push 的默認(rèn)行為
如果你運(yùn)行g(shù)it push,默認(rèn)的行為是將所有的分支提交到遠(yuǎn)程代碼庫(kù)。這可能會(huì)導(dǎo)致很多問(wèn)題,如果你不想這么做,你可以:git config --global push.default tracking。
更新: Git 2.0 移除了這個(gè)默認(rèn)的行為 http://blog.nicoschuele.com/posts/git-2-0-changes-push-default-to-simple
5、切換到一個(gè)分支 rebase 并 merge 到 master
可以這樣做:git rebase HEAD feature && git rebase HEAD @{-2}
6、Git 保存工作狀態(tài)
如果由于你的工作還沒(méi)有完成,但此時(shí)又有緊急的是找上你,你可以使用 git stash 來(lái)保存這些修改,提交你緊急的任務(wù),之后再用 git stash pop 恢復(fù)到你保存時(shí)的狀態(tài)。
7、別名
你還在為一次又一次的輸入 checkout 而感到討厭嗎?現(xiàn)在就去嘗試:git config --global alias.co checkout。你就可以通過(guò):git co master 命令來(lái)切換到master了。
8、重命名一個(gè)本地分支
使用:git branch -m old-name new-name 你可以很容易的重命名一個(gè)本地分支。
9、搜索作者名稱(chēng)
你可以通過(guò)使用git log --author=Matheus 來(lái)搜索一個(gè)指定作者的提交記錄。
10、給git status 加上參數(shù)
大多數(shù)人僅使用git status,但是,你可以傳入?yún)?shù)來(lái)改變狀態(tài)顯示的方式。
使用git status -sb 你可以得到類(lèi)似下面這樣的輸出:
## master M Gemfile M Gemfile.lock M app/controllers/home_controller.rb M app/views/home/index.html.erb
參考資料
原文鏈接:http://www.open-open.com/news/view/1b81290