学Git,用Git ③
不知道我前面是否将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就会自动忽略这些文件。
忽略文件的基本原则借用廖雪峰先生的说法分为以下三类:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的
.class文件; - 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
下面是.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 ③的更多相关文章
- 最近学到的Git知识,大厂的Git机制还是很方便的
本文首发于微信公众号:程序员乔戈里 转载请注明:https://blog.csdn.net/WantFlyDaCheng/article/details/102538508 一.两次的 git com ...
- [Git] 还原Git上commit,但是没有push代码
直接在Idea上操作2步解决: 1. 找到: 2. 在To Commit里面填写:HEAD^,表示将commit的信息还原为上一次的,需要多次直接reset多次即可: 使用命令行:原理一样 以下内容转 ...
- 命令行操作svn和git和git
前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...
- Git:Git初体验——Git安装配置
作为即将成为一个程序员的男人,一直在听别人说Git多好多好,之前也随便了解了一些,但是始终没有决心去学会.现在大四了,只有毕设和一门开学六七周只去过一次课的全员必修课外,也没有什么事情做,何不去做这些 ...
- 使用Git、Git GUI和TortoiseGit
1. 关于命令行 我一直建议在命令行中使用Git或者SVN.因为这样可能更加了解他们的工作方式,也不容易遗漏重要的问题和提醒. 在Windows习惯的驱使下,大多数人是不会看弹出的对话框中有什么信息的 ...
- git学习——git理解和仓库的创建
一.git用的3个工作的状态的理解. 1. 工作区 workspace(modified); 2. 暂存区 stage(staged) ; 3. git本地仓库 repository(commited ...
- git format-patch & git apply & git clean
一.打补丁 git format-patch & git apply 最近在工作中遇到打补丁的需求,一来觉得直接传文件有些low(而且我尝试了一下,差点把项目代码毁了) ,二来也是想学习一下, ...
- [git]图解git常用命令
本文图解git中最常用的命令.如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 约定 命令详解 Diff Commit Checkout Detached HEAD(匿名分支提 ...
- Android Studio配置Git及Git文件状态说明
Android Studio配置Git还是比较简单的,麻烦的是可能中间出现各种问题.如果你想了解或感兴趣,请往下看. 首先你得下载Git客户端,网址:http://git-scm.com/downlo ...
- Git Server & Git Hook
http://ju.outofmemory.cn/entry/16893 我喜欢 github,我现在的个人代码全部是托管在上面了,但是一些公司或者某些项目不适合放入github中,你希望能有一个完全 ...
随机推荐
- js 连等赋值 分析
JavaScript权威指南-第6版 4.11 赋值表达式 提到了连等赋值的情况,但是解释的不够详细,所以在此总结下: 首先看书上最重要的一句话: 这句话总结下就是: A = B ; // 整个表达式 ...
- 11.Curator扩展库
Recipes组件包含了丰富的Curator应用的组件.但是这些并不是ZooKeeper Recipe的全部.大量的分布式应用已经抽象出了许许多多的的Recipe,其中有些还是可以通过Cura ...
- intellij idea 编码设置(乱码问题)
一般把编辑器设置为 utf-8 如下设置: file-->setting-->editor-->file encodings-->
- Sqoop简介及使用
一.Sqoop概述 1)官网 http://sqoop.apache.org/ 2)场景 传统型缺点,分布式存储.把传统型数据库数据迁移. Apache Sqoop(TM)是一种用于在Apache H ...
- java基础05 选择结构
选择结构 public class Demo01Change { public static void main(String[] args) { /** * 实现等量的转换 */ int a = 5 ...
- shell 从文件中读取批量文件名并做命令行操作
222文件内容: /home/zhangsuosheng/Desktop/9-30/9_30/1bak/1538291162.png /home/zhangsuosheng/Desktop/9-30/ ...
- Count the string---hdu3336(kmp Next数组的运用)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 题意就是求串s的前缀的个数和: 例如:abab 前缀 个数 a 2 ab 2 ab ...
- Ubentu下安装Docker
具体可以查看Docker官网,我是在服务器上面操作 1,sudo apt-get install -y apt-transport-https ca-certificates curl softwar ...
- bug-sqlite3
[root@izj6c6b4i40od17ev77lhez Python-3.7.0]# python Python 3.7.0 (default, Sep 5 2018, 00:40:27) [GC ...
- 011-HQL中级1-Hive快捷查询:不启用Mapreduce job启用Fetch task三种方式介绍
如果你想查询某个表的某一列,Hive默认是会启用MapReduce Job来完成这个任务,如下: hive; Total MapReduce jobs Launching Job out since ...