你可能不知道git rerere
关于git rerere先卖个关子,在文章的最后会介绍这个命令,可能大多数人对git的认识停留在日常的pull、commit等,不信可以试着回答一下下面几个问题:
- git push origin master命令中,origin 代表的是什么?如何查看和修改这个origin?
- git fetch和git pull的不同?而git merge和rebase又有什么区别?
上面几个问题的答案请点击这里你们仍未掌握那天所学的 git 知识查看,而这篇你可以理解为一些平时不怎么用到但却很实用的git命令,希望我总结的这些能进一步加强你的git技能。
如果你还没用过git,可以在你的浏览器上输入try.github.io去探索git的世界。
git alias
敲git pull origin master 多了你可能就想看能不能少敲几个字符,和linux的alias一样,你可以对git命令设置简单的名字。
bash1git config --global alias.st status
当然你也可以在.gitconfig文件一起配置,例如我的.gitconfig中 alias配置:
bash1[alias] 2 ss = status 3 ct = commit 4 ck = checkout 5 bh = branch 6 pl = pull 7 ph = push 8 pom = pull origin master 9 pom3 = pull origin master3.0 10 df = diff 11 lg = log --graph --pretty=format:"%Cgreen(%h)%Creset-%d-%s by %C(yellow)%cN%Creset %cr" --abbrev-commit --date=relative 12 ckb = checkout -b
git show
查看某个文件的修改历史
bash1git log --pretty=oneline #filename 2git show 136e847550bfbd68c65e0b4dd617ce05a3d0af70 // 查看提交改动
git submodule
添加子项目代码
bash1git submodule add 仓库地址 路径
初始化下载子项目代码
bash1git submodule update --init --recursive
commit --amend
修改你的提交信息
bash1git commit --amend
git tag
给当前代码打上版本号;
这个非常实用,可以查看当前的标签,也可以给当前版本打上标签。
bash1git tag
git stash
暂存你的改动
bash1git stash
如果你有改动没有commit,当你checkout分支时,git会提示你先commit,这时可以使用stash暂存这些改动,然后使用git stash pop取出来。
git add -p
当你有多个改动,可能得提交在多个commit中,这时可以使用git add -p 一个个添加。
bash1git add -p
git remote prune
bash1git remote prune
当我们删除了远程分支,使用git branch -a 查看本地和远程的分支时,会发现有些分支在远程已经删除了,但在本地仍然可以看到这些已经删除的远程分支。 可以使用git remote show origin 来查看关于origin远程分支、本地分支的详细信息,提示你使用git remote prune origin来清理这些分支。
git blame
挑毛病利器
bash1git blame #filename
查找文件的每一处改动历史,显示提交commit号、作者、时间、改动等。
git log --pretty=format
git log是查看git历史的常用命令,但是很多时候输出的信息并不是很直观(也可以尝试一下git shortlog),有时我们想看更多或更少的信息,这里可以使用format来定制你的log输出格式,简单点的可以这样
bash1git log --format=oneline --abbrev-commit
例如这是我的:
bash1git log --graph --pretty=format:"%Cgreen(%h)%Creset-%d-%s by %C(yellow)%cN%Creset %cr" --abbrev-commit --date=relative 2
具体可以参照这里.
git rerere
帮助你解决冲突
bash1 2# 开启git rerere 3git config --global rerere.enabled true
rerere = reuse recorded resolution 它会让Git记住你是如何解决某个文件的两个版本之间的conflict,这样在下次Git遇到同样的文件在相同的两个版本间发生冲突时,可以自动帮你使用相同的方法解决冲突。 具体如何开启使用点击查看git rerere