git进阶

作者: harvey_dong | 来源:发表于2017-06-03 16:34 被阅读22次

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

    相关文章

      网友评论

        本文标题:git进阶

        本文链接:https://www.haomeiwen.com/subject/muqmfxtx.html