Linux:已经会用Git了?不会这十招怎么行
June 19, 2015
之前我们发了一些教程让你熟悉Git基础和在团队合作环境中使用Git.我们讨论的这些Git命令足够让一个开发者在Git的世界里生存下去。在这篇教程里,我们试着探索如何高效地管理你的时间以及如何充分利用Git提供的特性。
注意:这里介绍的命令中有的包含方括号(例如:git add -p [file_name])。在这些例子中,你应该用你自己的数字、标识符等替代方括号里的内容,并且去掉方括号。
Table of Contents
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]
在下面的截图里,你可以看到在一个更大的库里这个命令的输出是什么样的:
4. 查看库的历史
在之前的教程里,我们已经看过了如何使用git log命令。不管怎样,有3个选项你应该知道。
- –oneline – 压缩每次的提交信息,只保留一个缩减的Hash值和说明文字,然后把这些都展示在一行里。
- –graph – 这个选项将在左边画出一个文字界面的提交历史图。如果你只有一个分支,用这个选项查看历史时是没什么意义的。
- –all – 显示所有分支历史。
这是这3个选项合起来使用的效果:
5. 不要丢失对某个提交的跟踪
假设你提交了一些不需要的东西,然后你进行了hard重置回到之前的状态。后来,你发现在这个过程中你丢失了其他一些重要的信息,你想要把这些信息找回来,或者至少可以查看一下这些信息。这就需要git reflog帮忙。
简单的git log只能告诉你最近的提交,这个提交的父提交,父提交的父提交,等等。但是git reflog是一个HEAD指向的提交的列表。记住,这个列表依赖于你自己的本地操作环境,它不是库的一部分,也不包含在push或者merge中。
如果执行git log命令,可以看到提交历史,这是我的库的一部分:
但是,git reflog命令显示了一个被我用hard重置丢掉的提交(b1b0ee9-HEAD@{4}).
0 Comments