alias 命令縮寫
- 設置縮寫別名:
**git config --global alias.co checkout **
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
以后就可以用縮寫代替了:
git co
git ci
git st
git br - 還可以設置組合縮寫:
git config --global alias.psm 'push origin master'
git config --global alias.plm 'pull origin master' - 更好看的 log:
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
利用縮寫:
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
以后用 git lg 就行了。
stash
假設我們正在一個新的分支做新的功能,這個時候突然有一個緊急的 bug 需要修復,而且修復完之后需要立即發布。當然你說我先把剛寫的一點代碼進行提交不就行了么?這樣理論上當然是 ok 的,但是這會產生垃圾 commit,原則上我們每次的 commit 都要有實際的意義,你的代碼只是剛寫了一半,還沒有什么實際的意義是不建議就這樣 commit 的,那么有沒有一種比較好的辦法,可以讓我暫時切到別的分支,修復完 bug 再切回來,而且代碼也能保留的呢?
- 前提是代碼沒有進行 commit ,哪怕執行了 add 也沒關系,先執行:
git stash
就是把當前分支所有沒有 commit 的代碼先暫存起來。 - 查看暫存區記錄:
git stash list - 事情做完了,要還原代碼:
git stash apply - 最后最好需要把暫存區的這次 stash 記錄刪除:
git stash drop
后面可以跟 stash_id 參數來刪除指定的某條記錄,不跟參數就是刪除最近的。
或:
git stash pop
不但會幫你把代碼還原,還自動幫你把這條 stash 記錄刪除。 - 清空所有暫存區的記錄:
git stash clear
merge & rebase
- 要合并分支,可以:
git checkout master
git merge featureA
或:
git checkout master
git rebase featureA - 區別在于:
rebase 跟 merge 的區別你們可以理解成有兩個書架,你需要把兩個書架的書整理到一起去,第一種做法是 merge ,比較粗魯暴力,就直接騰出一塊地方把另一個書架的書全部放進去,雖然暴力,但是這種做法你可以知道哪些書是來自另一個書架的;第二種做法就是 rebase ,他會把兩個書架的書先進行比較,按照購書的時間來給他重新排序,然后重新放置好,這樣做的好處就是合并之后的書架看起來很有邏輯,但是你很難清晰的知道哪些書來自哪個書架。
- 查看配置;
git config -l - 比較兩次提交之間的差異:
git diff <$id1> <$id2> - 在兩個分支之間比較:
git diff <branch1>..<branch2> - 比較暫存區和版本庫差異:
git diff --staged