不知道我前面是否将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. maven打包排除spring-boot内嵌tomcat容器依赖jar

    在pom文件中添加打包排除配置信息. <plugin> <artifactId>maven-war-plugin</artifactId> <version& ...

  2. Centos7.2yum安装时候出现db5错误的解决办法

    Centos7.2使用yum安装软件是出现如此错误提示 解决办法 删除 /var/lib/rpm文件夹下面所有以__db开头的文件

  3. Spring Data 分页和排序 PagingAndSortingRepository的使用(九)

    继承PagingAndSortingRepository 我们可以看到,BlogRepository定义了这样一个方法:Page<Blog> findByDeletedFalse(Page ...

  4. 并发编程 - io模型 - 总结

    1.提交任务得方式: 同步:提交完任务,等结果,执行下一个任务 异步:提交完,接着执行,异步 + 回调 异步不等结果,提交完任务,任务执行完后,会自动触发回调函数2.同步不等于阻塞: 阻塞:遇到io, ...

  5. 手动编译安装Libvirt之后利用systemctl管理libvirtd服务

    因为要给特殊的虚拟机关联文件指定selinux标签,而默认的Libvirt没有这个功能,所以需要修改LIbvirt源代码,重新编译安装Libvirt,而手动编译安装的LIbvirt,没有办法使用sys ...

  6. Flume 1.7 源代码分析(四)从Source写数据到Channel

    Flume 1.7 源代码分析(一)源代码编译 Flume 1.7 源代码分析(二)总体架构 Flume 1.7 源代码分析(三)程序入口 Flume 1.7 源代码分析(四)从Source写数据到C ...

  7. Python 学习笔记之random 模块

    要使用Random 模块里的一些随机数方法需要先导入random 模块. 下面是几种常用的随机数方法: 以生成随机8位密码,包括大小写字母,数字为例 pwd = ''.join(random.samp ...

  8. Java中的编码乱码问题

    1. Eclipse的Run Configurations中,可以配置Console的Encoding Eclipse中使用 mvn clean package命令来执行. 设置为MS932时,下面的 ...

  9. 前端须知的http header

    文件信息: Content-Type: application/x-javascript Content-Length: 2000 Content-Type:指定请求和响应的内容类型,如果未指定即为t ...

  10. SQL Server outer apply 和 cross apply

    先说点题外话,因为后面我会用到这个函数. 前两天自定义了一个 sql 的字符串分割函数(Split),不过后来发现有点问题,例如: select * from Split(default,'123,4 ...