MAC + LINUX + VIM + GIT + Latex + Markdowngit篇Git使用

git进阶

2017-06-03  本文已影响22人  harvey_dong

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可以查看所有分支的所有操作记录。

检查丢失的提交

尽管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查看。

上一篇 下一篇

猜你喜欢

热点阅读