8 个 Git 的小技巧
git 已经成为了我日常必备工具之一,我总结我几乎每天使用的8个有用(且简洁)的git技巧。

使用-p选择性添加
当你想提交内容时,你可以通过使用 git commit -am 来选择所有文件或使用 git add file 来添加特定文件。然而,有时候你可能想只添加文件的一部分来提交。你可以用 git add -p 交互性地选择哪些你想提交的部分。
在选择完你所想要提交的区块后,只需要做一个 git commit(没有 -a),这样只会提交选中的部分。同样可以使用 git checkout -p 来选择需要恢复的部分。添加后,你可以使用 git diff –cached 来查看差异。
交互式的重建基准(Interactive Rebase)
如果你在一个分支上工作,同时进行了一些 WIP 提交(commit) ,以用来压缩合并(squash)或者删除一个提交(commit)以及这个提交的恢复, 你可以做一个交互式的重建基准(rebase),用来重新组织提交。
为了做到这点,你需要运行命令 git rebase -i ,这里的是你想要重写之前的一个提交(commit)的sha1值。接下来,它将在你的编辑器(在$EDITOR环境变量,或者git配置里面指定的编辑器)上面打开一些指令,用来变更提交(commit)历史,你可以选择压缩合并(将两次提交合并为一次新的提交),重写(变更提交信息),编辑甚至删除一个提交(commit)。
请注意这改变了历史信息,因此,如果你提交了这个变更,你将不得不再一次强制提交(push),所以,绝不要在主分支,或者有其他人(除你之外)在使用的分支上面做这个操作。
储藏(Stashing)
如果你正忙于什么事情,你必须更改文本去修复其他问题,去git stash查到到储藏在当前中的更改。然而,过一段时间后,你可能就会忘记关于这个已储藏的变更。因此,我试着去保持一个储藏0(就像收件箱0如果没有储藏的情况)规则。每一次我储藏一个美元信号出现在我的输出,并且我通过git stash show -p检查,还可以通过git stash pop弹出或者通过git stash clear丢弃。
全局gitignore
在项目的根目录,你可以通过文件.gitignore来指定git需要忽略的文件。但是,如果存在git需要忽略的文件,同时,你又是唯一创建这个文件的人(如vim的 bkp文件,编辑器或者操作系统生成的一些文件,如OSX生成的.DS_Store文件),你可以在配置文件中指定全局的gitignore文件,它和工程中的.gitignore文件使用一样的语法格式。
git config --global core.excludesfile=/Users/flores/.gitignore
空格警告
我不得不承认:有时候我忘记代码尾部的一些空格。但是,通常我不会提交它们,因为我使用了这个选项:apply.whitespace=warn。每次我通过git add -p增加文件中的一大块代码,同时,这个代码块尾部包含空格,由于git给出警告提示,因此我可以在提交前修正它们。
自动重建代码基准(Auto setup rebase)
另一个很酷的技巧是自动重建代码基准(auto setup rebase)。如果你有一个分支,并做了一些commit但并未push。同时,其他人也在这个分支上进行了commit和push。当你pull的时候,git会创建一个commit来合并你的commit到上游(upstream)commit。由于这个commit毫无意义,我更倾向于,在pull时,通过配置来自动重建代码基准(auto setup rebase):branch.autosetuprebase=always。设置之后,每个pull操作,git都会尝试在当前版本的上游(upsteam)分支重新使用你的commit。
更好的日志(logging)
你是否尝试过在一个分支中找一个特定的提交啊? git log 给我们提供了一些基本的信息,不过你使用下面的命令会得到更多有用的信息:
git log --graph --decorate --pretty=oneline --abbrev-commit
–graph 会在各个提交之间打印出线条,这些线条可以展示出分支之间的关系。
–decorate 显示出分支处在哪一次提交上。
–pretty=oneline 只是在一行中显示 sha1 和 提交的注释(译者将title一词应对到更精确的注释)
–abbrev-commit 用开始的7个sha1字符代替整个sha1(他在你的仓库中是唯一的)。
你可以到explain shell去看这些选项的更详细(且是完整)的解释。
改写提交的注释
如果你在提交代码的时候注释不能准确的描述当前提交,或者你写了错别字。你可以使用 git commit –amend 来改写你已经提交的注释。 他允许你在命令行中通过 -m 选项来指定新注释或直接打开系统默认编辑器让你来编辑新的注释。 另外你还可以把一些新的变化加入到上一次提交中。请记住 该操作和 Interactive Rebase 一样,他会改变提交历史。如果你已经把你改动的这次提交push了,那么你需要强制(force)push这次变化。
欢迎你在评论中分享你在工作中发现一些能提升工作效率的 git小技巧。
本文转自:码农网

8 个 Git 的小技巧的更多相关文章
- Git使用小技巧之多个远程仓库
想要获取更多文章可以访问我的博客 - 代码无止境. 这是一个普通的工作日,小代正在勤勤恳恳的写代码.这时陈BOSS走到小代身边,跟小代说:"我们的代码需要同时推送到Github和码云两个仓库 ...
- Git使用小技巧之免密登录
想要获取更多文章可以访问我的博客 - 代码无止境. 小代同学在使用Git的过程中发现,每次向远程仓库推送代码的时候都需要输入账号密码.做为一个程序员,多多少少都会有偷懒的思维.那么如何才能避免每次都要 ...
- Git使用小技巧之回滚和撤销
想要获取更多文章可以访问我的博客 - 代码无止境. 日常的开发,我们难免会创建错误的git提交记录,整个时候git给我们提供了两个命令来解决这个问题.一个命令是git reset,另一个是git re ...
- Git使用小技巧之Stash命令藏储零乱分支
想要获取更多文章可以访问我的博客 - 代码无止境. 在开发的过程中可能会经常出现下面这种情况,我们正在开发某个功能,当前分支的内容比较乱,不太适合提交,而此时我们需要切换到其他分支上处理一些事情.这 ...
- Git使用小技巧之挑拣合并
先想想一个情况,现在我们有一个功能急需要发布到线上,但是这个功能相关的代码所在的测试分(test)支有很多不应该发布的代码,那么这个时候我们就需要将与这个代码相关的提交选择性的合并到master上并发 ...
- Android Studio|IntelliJ IDEA Git使用小技巧
一 分支管理 1. 新建分支 在master的基础上创建新分支dev 2. 推送分支 将新建的分支dev推送到远程 3. 切换分支 4. 合并分支 当我们在dev分支完成代码修改并测试通过后 需要将d ...
- git使用小技巧
1. 合并一个分支的某次提交到另一个分支上 例如 将dev的某次提交 asfdiwehfsalkdnva872383 合并到master # git checkout master # git che ...
- git使用小技巧-忽略提交文件设置
前言 我们可以把自己的代码放到github上,但是我们有的文件或者文件夹不想提交到github上,这时候用到一个忽略文件 操作方法 * 在项目根目录创建一个 .gitignore文件 * 打开.git ...
- Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具
前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...
随机推荐
- APACHE 多站点配置方法
例如你的主机IP:192.168.1.8 而你有三个站点,域名为:www.111.com,www.222.com,www.333.com 相应的网站文件放在主机的:\website\111;D:\we ...
- 制作和unity调用动态链接库dll文件
首先用vc建立一个dll工程 然后在里面建立一个testunity.h文件.内容如下 1 extern "C" int _declspec(dllexport)testunity( ...
- rsyslog
http://www.rsyslog.com/ http://www.rsyslog.com/doc/v5-stable/troubleshooting/troubleshoot.html RSYSL ...
- linux安全
http://drops.wooyun.org/ 最专业的安全知识分享平台 http://www.freebuf.com/ 关注黑客与极客 http://book.beifabook.com/prod ...
- httpClenit的post出现乱码问题
在使用httpClient.executeMethod(postMethod)的时候,发现一直存在乱码问题,”book is good“被转成”book+is+good“ 返回.查看源码后,发现pos ...
- Web版报表的架构和设计思路
通常,我们设计一个报表,会面临设计报表,构造数据,展示报表的一个过程 设计报表也许大家都会用过,比如水晶报表,jreport一堆一堆的. 不过我觉得最好用的应该还是office做成的报表,谁都会,而且 ...
- 【redis】 linux 下redis 集群环境搭建
Redis集群 (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) 127.0.0.1:63791 ...
- MongoDB shell 格式化
直接的方法: db.collection.find().pretty(); 如果想要所有的查询都格式化,可以执行: echo "DBQuery.prototype._prettyShell ...
- JS代码实现网站设为首页加入收藏功能
<script language="javascript"> //加入收藏 function AddFavorite(sURL, sTitle) { try { win ...
- 【jmeter】测试报告优化<二>
如果按JMeter默认设置,生成报告如下: 从上图可以看出,结果信息比较简单,对于运行成功的case,还可以将就用着.但对于跑失败的case,就只有一行assert错误信息.(信息量太少了,比较难找到 ...