不知道我前面是否将git讲清楚了,这里再稍微总结一下git的一个重要功能用法,同时增加两个很实用的git使用技巧。

1.git"读档"与git"回退"

我发现我之前似乎没有很好的理清git"读档"与git"回退"之间的关系,在此做以额外的说明。

(1)git"读档"

还记得我之前将commit操作比做"存档"的事吗?你可以随时使用git reset --hard(注意--与hard之间没有空格)<file name>进行"读档",还原你某次存档时的内容,当然,还有一种方法是使用git reset --hard HEAD^ 之前提过在这里就不再赘述。

(2)git"回退"

与git"读档"不同的地方在于,在工作中我们经常在存档之前就想反悔了,也即是说,我们不想保留现有的改动,想要"回退"到改动之前的部分。让我们想想在整个git结构中会出现反悔情节的"时机"。

A.工作区反悔:

在工作区就想反悔,即文件改了又改觉得不好,想要取消修改,这种情况下,又分两种情况:第一种情况是工作区的文件a之前已经add进入了暂存区,另一种情况是文件a没有在暂存区存在。git的风骚之处就在于总是有后悔药吃,这两种情况我们当然都有办法解决,解决方法是使用 git checkout -- <file name> 命令。这个命令会使工作区的被改动文件回退到最近的一次保留状态(注意,缓存区的文件也算作是“保留”)。

B.缓存区反悔:

当然,有时候我们意气风发一气呵成的将文件add到了缓存区,才恍然发现这其实并不是我们想要的结果。放心,git里总有后悔药吃,使用 git reset HEAD <file name>可以将缓存区文件重新退回到工作区,给你一次再来一次的机会。

所以,综合以上两种方式,我们可以轻松把控存档之前的任何文件改动环节,不知道你明白了吗?

2.忽略特殊文件

使用git时,经常会遇到一个问题就是,在使用 git status 命令查看目前仓库状况时,各环境下自动生成的一些文件总是出现在显示区域,使强迫症实在不能忍。git针对这种现象也给出了十分给力的解决方式,即在git仓库的根目录下创建一个.gitignore文件然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

忽略文件的基本原则借用廖雪峰先生的说法分为以下三类:

  1. 忽略操作系统自动生成的文件,比如缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  3. 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

下面是.gitignore文件内容的一个示范:

  

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini # Python:
*.py[cod]
*.so
*.egg
*.egg-info
dist
build # My configurations:
db.ini
deploy_key_rsa

最后再附加一个各类配置文件大全,戳地址https://github.com/github/gitignore

3.自定义快捷键

用git用的久了,就是想再懒一点,每次手打git status老是手抖就会打错,不爽。

放心,git总是会让你爽起来,通过让你自定义快捷键的方式:

  

$ git config --global alias.st status
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
$ git config --global alias.unstage 'reset HEAD'
$ git config --global alias.last 'log -1'
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

  别着急,我们现在就对这些代码进行说明,git config表示进行配置git,--global表示这项配置是针对所有git仓库的,因此你在任何时候都可以调用。之后的alias你可以看做是git里.git/config 文件中的一个属性名,你可以通过随后的.[name]为其添加你希望的快捷键名,并使用 空格+针对的git命令 对两者进行匹配。(对于全局git而言,自定义快捷键存储在git的隐藏文件.gitconfig中)。这样你就完成了git命令的重命名,下次使用git时,只要输入git st就可以实现git status的效果啦。

学Git,用Git ③的更多相关文章

  1. 最近学到的Git知识,大厂的Git机制还是很方便的

    本文首发于微信公众号:程序员乔戈里 转载请注明:https://blog.csdn.net/WantFlyDaCheng/article/details/102538508 一.两次的 git com ...

  2. [Git] 还原Git上commit,但是没有push代码

    直接在Idea上操作2步解决: 1. 找到: 2. 在To Commit里面填写:HEAD^,表示将commit的信息还原为上一次的,需要多次直接reset多次即可: 使用命令行:原理一样 以下内容转 ...

  3. 命令行操作svn和git和git

    前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...

  4. Git:Git初体验——Git安装配置

    作为即将成为一个程序员的男人,一直在听别人说Git多好多好,之前也随便了解了一些,但是始终没有决心去学会.现在大四了,只有毕设和一门开学六七周只去过一次课的全员必修课外,也没有什么事情做,何不去做这些 ...

  5. 使用Git、Git GUI和TortoiseGit

    1. 关于命令行 我一直建议在命令行中使用Git或者SVN.因为这样可能更加了解他们的工作方式,也不容易遗漏重要的问题和提醒. 在Windows习惯的驱使下,大多数人是不会看弹出的对话框中有什么信息的 ...

  6. git学习——git理解和仓库的创建

    一.git用的3个工作的状态的理解. 1. 工作区 workspace(modified); 2. 暂存区 stage(staged) ; 3. git本地仓库 repository(commited ...

  7. git format-patch & git apply & git clean

    一.打补丁 git format-patch & git apply 最近在工作中遇到打补丁的需求,一来觉得直接传文件有些low(而且我尝试了一下,差点把项目代码毁了) ,二来也是想学习一下, ...

  8. [git]图解git常用命令

    本文图解git中最常用的命令.如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 约定 命令详解 Diff Commit Checkout Detached HEAD(匿名分支提 ...

  9. Android Studio配置Git及Git文件状态说明

    Android Studio配置Git还是比较简单的,麻烦的是可能中间出现各种问题.如果你想了解或感兴趣,请往下看. 首先你得下载Git客户端,网址:http://git-scm.com/downlo ...

  10. Git Server & Git Hook

    http://ju.outofmemory.cn/entry/16893 我喜欢 github,我现在的个人代码全部是托管在上面了,但是一些公司或者某些项目不适合放入github中,你希望能有一个完全 ...

随机推荐

  1. Debian安装Chrome

    本文完全原创,转载请说明出处,希望对大家有用. 本篇博客是个人总结,一方面以便日后查看,另一方面希望能为其他人提供一些便利. 正文 新安装的Debian需要安装个chromeFQ,但从google网站 ...

  2. java方法的理解、调用栈与异常处理

    一.流程分支 If/else :基于boolean值的双分支 Switch:基于数字(整数.char.byte.枚举).字符串 类型的多分支 Int month =5; Switch 二.方法meth ...

  3. C语言实现链表中结构体嵌套

    1.首先,定义两个结构体,一个用于定义链表,一个用于定义数据 // 定义数据相关的结构体 typedef struct Student{ int stu_id; ]; }Stu; // 定义链表相关的 ...

  4. Servlet------>mvc模式原理图

    常用开发模式: 客户在客户端 访问,发送请求到servlet servlet调用service接口 service实现类调用dao接口 dao接口通过jdbc技术操作数据库,并存储到javabean, ...

  5. Qt JSON解析生成笔记(把JSON转成一个类对象)

    对于这样一段json { "name": "布衣食", "gender": "Male", "age" ...

  6. Linux df命令

    df命令用于查看磁盘的分区,磁盘已使用的空间,剩余的空间 1.用法 df [选项] [文件..] 2.命令选项 -a,--all 全部文件系统-h,--human-readable 以以合适的单位来显 ...

  7. spring MVC 学习(四)---拦截器,视图解析器

    1.接口HandlerInterceptor 该接口包含3个方法,分别是preHandle,postHandle,afterCompletion,分别代表着执行前,执行后,执行完成要执行的方法,其中p ...

  8. 1.如何在虚拟机ubuntu上安装hadoop多节点分布式集群

    要想深入的学习hadoop数据分析技术,首要的任务是必须要将hadoop集群环境搭建起来,可以将hadoop简化地想象成一个小软件,通过在各个物理节点上安装这个小软件,然后将其运行起来,就是一个had ...

  9. Spark2.0机器学习系列之10: 聚类(高斯混合模型 GMM)

    在Spark2.0版本中(不是基于RDD API的MLlib),共有四种聚类方法:      (1)K-means      (2)Latent Dirichlet allocation (LDA)  ...

  10. django+celery 实现定时任务

    利用 celery 实现定时任务 celery支持定时任务,设定好任务的执行时间,celery就会定时自动帮你执行, 这个定时任务模块叫celery beat Celery安装 由于celery 4. ...