git进阶
git中有此高级命令,在开发中可以帮助我们解决问题,同时提高工作效率。
1 git stash
git stash相当于开辟了一个储存堆栈.当我们要切换分支,但还不想提交时,可以使用此命令快速保存状态。
git stash 不带参数时会将当前工作区的改变保存在栈顶。
git stash list 可以查看当前堆栈中保存的所有储藏点。
git stash drop 会将栈顶的储藏点从堆栈中移除。Git stash pop是一个便捷命令,可以将栈顶的储藏点应用到工作区,同时会将储藏点移除栈顶。
git stash apply [储藏点名字] 可以将指定的储藏点应用到工作区中。
git stash save “stash message” 可以给要保存的信息添加评论。
2 下面命令可使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
3 git reflog
git reflog可以查看所有分支的所有操作记录。
4 检查丢失的提交
尽管reflog是唯一检查丢失提交的方式。但它不是适应用于大型的仓库。那就是fsck(文件系统检测)命令登场的时候了。
git fsck --lost-found
这里你可以看到丢掉的提交。你可以通过运行git show [commit_hash]查看提交之后的改变或者运行git merge [commit_hash]来恢复到之前的提交。git fsck相对reflog是有优势的。比方说你删除一个远程的分支然后关闭仓库。用fsck你可以搜索和恢复已删除的远程分支。
5 cherry-pick
cherry-pick就是从不同的分支中捡出一个单独的commit,并把它和你当前的分支合并。如果你以并行方式在处理两个或以上分支,你可能会发现一个在全部分支中都有的bug。如果你在一个分支中解决了它,你可以使用cherry-pick命令把它commit到其它分支上去,而不会弄乱其他的文件或commit。
Git cherry-pick [commit-hash]
.如果顺利,就会正常提交
如果在cherry-pick的过程中出现了冲突,就跟普通的冲突一样,手工解决。
6 查找修改者
git blame 该命令会显示出文件中每一行的作者,提交hash则会找出该行的上一次修改,还能看到提交的时间戳。
7 忽略文件
在git根目录有新建一个".gitignore"。这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。被过滤掉的文件不会出现在git仓库中(gitlab或github),当然本地库中还有,只是push的时候不会上传。忽略文件中支持“*”,“?”,“!”。详情可以看这里。
8 git rebase
git rebase -i 【commitid】 用于压缩多个commit 为一个commit。
如果你想要压缩最后两个commit 可以 git rebase -i HEAD~2
运行该命令时,你会看到一个交互界面,列出了许多commit让你选择哪些需要进行压缩。理想情况下,你选择最后一次commit并把其它老commit都进行压缩。在保留的commit 前改成pick 需要合并的commit 修改成squash 然后保存(vim 中:wq)然后git 会要求你输入合并后的commit message。输入后保存就成功了。
9 从另一分支获取文件内容而不用切换分支
git checkout 【分支名】【文件路径】
该命令类似于cherry-pick,都是把一个分支改变的内容copy到另一个分支,不同点在于cherry-pick会在目标分支上自动产生一个新的commit,而checkout则仅做内容的改变,不会自动提交
10 设置beyond compare作为对比工具
打开 Beyond Compare -> Beyond Compare Menu ->Install Command Line Tools必须要安装Beyond Compare 命令工具,否则会报错
设置diff
git config --global diff.tool bc3 设置后就可以使用git difftool <filename> 进行比较了
设置Merge
git config --global merge.tool bc3
git config --global mergetool.bc3 trustExitCode true 使用与diff类似。git mergetool <filename>
但是每次比较文件的时候都要询问我是否启动对比工具。可以使用下面命令去掉
git config --global difftool.prompt false
11 git 其他设置
git 更新远程分支列表 git remote update origin --prune
Git中可以使用alias为命令设置别名可以提高工作效率。例如:
Git config --global alias.co checkout
Git config --global alias.ci commit
如果想要终端有颜色就可以开启给git输出颜色
Git config --global color.ui true
设置终端的编辑器为vim(当然首先要安装在电脑上)
Git config --global core.editor “vim”。
这些配置都保存在~/.gitconfig中可以打开这个文件查看,也可以使用命令git config -l查看。