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