找回密码
 骑士注册

QQ登录

微博登录


已经会用Git了?不会这十招怎么行

2014-07-25 15:24    评论: 11 收藏: 9 分享: 17    

之前我们发了一些教程让你熟悉Git基础在团队合作环境中使用Git.我们讨论的这些Git命令足够让一个开发者在Git的世界里生存下去。在这篇教程里,我们试着探索如何高效地管理你的时间以及如何充分利用Git提供的特性。

注意:这里介绍的命令中有的包含方括号(例如:git add -p [file_name])。在这些例子中,你应该用你自己的数字、标识符等替代方括号里的内容,并且去掉方括号。

1. Git自动补全

如果你在命令行环境中运行Git命令,每次都手动地逐个输入命令是一件很无聊的事。为此,你可以花几分钟时间配置一下Git命令的自动补全功能。

在*nix系统运行下列命令下载自动补全脚本:

cd ~
curl https://raw.github.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

然后,添加下面的行到你的~/.bash_profile文件:

if [ -f ~/.git-completion.bash ]; then
    . ~/.git-completion.bash
fi

尽管我之前已经提到过,但我还是想再强调一下:如果你想使用完整的Git特性,你绝bi应该切换到命令行环境。

2. 在Git中忽略文件

你是不是对出现在你Git库里面的编译生成文件(比如.pyc)感到很无语?或者你是不是很厌恶不小心将他们添加到了Git?直接看这里,这里有一个方法可以让你告诉Git忽略所有这些文件和目录。只需要创建一个名字为.gitignore的文件,里面列出你不想要Git跟踪的文件和目录。可以用感叹号(!)列出例外情况。

*.pyc
*.exe
my_db_config/

!main.pyc

3. 谁动了我的代码?

当事情出了乱子时立马责怪别人这是人类的天性。如果你的服务器程序不能正常工作了,要找出罪魁祸首是非常简单的--只需要执行git blame。这个命令告诉你文件里的每一行的作者是谁,最后改动那一行的提交,以及提交的时间戳。

git blame [file_name]

git blame demonstration

在下面的截图里,你可以看到在一个更大的库里这个命令的输出是什么样的:

git blame on the ATutor repository

4. 查看库的历史

在之前的教程里,我们已经看过了如何使用git log命令。不管怎样,有3个选项你应该知道。

  • --oneline - 压缩每次的提交信息,只保留一个缩减的Hash值和说明文字,然后把这些都展示在一行里。
  • --graph - 这个选项将在左边画出一个文字界面的提交历史图。如果你只有一个分支,用这个选项查看历史时是没什么意义的。
  • --all - 显示所有分支历史。

这是这3个选项合起来使用的效果:

Use of git log with all, graph and oneline

5. 不要丢失对某个提交的跟踪

假设你提交了一些不需要的东西,然后你进行了hard重置回到之前的状态。后来,你发现在这个过程中你丢失了其他一些重要的信息,你想要把这些信息找回来,或者至少可以查看一下这些信息。这就需要git reflog帮忙。

简单的git log只能告诉你最近的提交,这个提交的父提交,父提交的父提交,等等。但是git reflog是一个HEAD指向的提交的列表。记住,这个列表依赖于你自己的本地操作环境,它不是库的一部分,也不包含在push或者merge中。

如果执行git log命令,可以看到提交历史,这是我的库的一部分:

Project history

但是,git reflog命令显示了一个被我用hard重置丢掉的提交(b1b0ee9-HEAD@{4}).

Git reflog

12下一页
查看其它分页:

发表评论


最新评论

我也要发表评论

游客 2014-08-12 14:31 回复
@我的印象笔记
不二怎么做朋友 2014-07-26 01:33  新浪微博网友评论 回复
@我的印象笔记
单弘昊 2014-07-26 00:03  新浪微博网友评论 回复
@我的印象笔记
等魔炮3rd的高町薇薇欧 2014-07-25 22:33  新浪微博网友评论 回复
Mark涨姿势//@Linux中国:自动补全根本不算个事,只是为下面的九个功能铺垫的~//@Nicholas__Xue: 自动补全
Js_初学者 2014-07-25 22:33  新浪微博网友评论 回复
mark
此间的吃货_中二病不治 2014-07-25 22:03  新浪微博网友评论 回复
@我的印象笔记 //@Linux中国: 自动补全根本不算个事,只是为下面的九个功能铺垫的~//@Nicholas__Xue: 自动补全
Linux中国 2014-07-25 22:03  新浪微博网友评论 回复
自动补全根本不算个事,只是为下面的九个功能铺垫的~//@Nicholas__Xue: 自动补全
年年_去旅行 2014-07-25 21:33  新浪微博网友评论 1 回复
马克
[1]
you~ 发表于 2014-07-25 20:01 的评论:
我不会这些也在用。嘿嘿。
linux 2014-07-25 21:27 1 回复
那还差很多呢,我今天一看,晕,原来还有这么多功能——Linus真牛啊。
Nicholas__Xue 2014-07-25 18:03  新浪微博网友评论 回复
自动补全

LCTT 译者

共计翻译: 8 篇 | 共计贡献: 120
贡献时间:2014-05-21 -> 2014-09-18
访问我的 LCTT 主页 | 在 GitHub 上关注我

收藏

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。