不知道我前面是否将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. Linux Tar 命令简明教程

    Tar 命令经常用但是它的各种参数又总是记不住,因此彻底梳理了一下,再也不会忘记. Tar 是 Linux 中的(压缩)归档工具. 归档的意思与打包相同,就是把文件或目录或者多个文件和目录打包为一个文 ...

  2. bootstrap datetimepicker 日期插件超详细使用方法

    日期时间选择器 目前,bootstrap有两种日历.datepicker和datetimepicker,后者是前者的拓展. Bootstrap日期和时间组件: 使用示例: 从左到右依次是十年视图.年视 ...

  3. 在iOS模拟器上安装程式的ios-sim

    针对iOS装置进行开发时,绝大部分开发者采用的工具都是官方的Xcode.问题是负责图像设计和开发管理人员,却不一定熟悉Xcode的操作,这时ios-sim便是一个解决方案. 曾经从事iOS开发的朋友, ...

  4. http协议----->http请求方式,post,get

    4.http请求方式有七种(http请求是想web资源请求数据) Post get head options delete trace put 常用:GET POST POST例如form表单提交,G ...

  5. Netty in action—Netty中的ByteBuf

    Netty in action—Netty中的ByteBuf - 日积月累 - CSDN博客 https://blog.csdn.net/yjw123456/article/details/77843 ...

  6. FIR Matlab DSP

  7. C#日期处理(转) 太忘记了,备忘

    //今天 DateTime.Now.Date.ToShortDateString(); //昨天,就是今天的日期减一 DateTime.Now.AddDays(-1).ToShortDateStrin ...

  8. MapReduce分布式编程框架

    一.MapReduce分布式编程框架及yarn集群搭建 1.大数据解决的问题? 海量数据的存储:hadoop->分布式文件系统HDFS 海量数据的计算:hadoop->分布式计算框架Map ...

  9. C. Mail Stamps---cf29c(离散化,图)

    题目链接:http://codeforces.com/problemset/problem/29/C 题意就是有n(1e5)个点,找到一条能把所有的点都包含在内的路径,由于点的编号是 1e9 所以不得 ...

  10. 19.Delete Documents-官方文档摘录

    1 插入例子 db.inventory.insertMany( [ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: & ...