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

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

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

[[116954]]

注意:这里介绍的命令中有的包含方括号(例如: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

原文链接:http://www.linuxeden.com/html/softuse/20140726/154105.html

责任编辑:牛小雨 来源: linuxeden
相关推荐

2021-05-25 14:10:34

AI 数据人工智能

2020-12-18 09:45:33

DockerLinux命令

2021-11-02 06:58:53

架构线程池参数

2020-12-30 10:02:11

机器狗人工智能波士顿

2020-03-06 10:25:10

注解Java代码

2021-03-16 15:12:57

CompletableFuture机制java

2012-09-24 11:06:39

社交产品创业创业秘诀

2016-08-23 00:15:28

2022-08-12 15:58:34

Docker

2020-11-10 09:45:16

Git修改记录

2020-10-21 10:02:16

架构运维技术

2024-02-05 10:10:06

Vue策略编译

2012-02-02 16:58:02

Eclipse

2020-02-20 11:16:58

Python数据函数

2021-02-07 23:35:19

人工智能互联网网购

2020-02-28 08:00:13

网络安全黑客网络攻击

2020-09-15 09:50:47

程序员技能开发者

2021-01-28 09:40:33

运维监控工具软件

2011-03-01 10:29:09

2012-05-25 12:37:33

Git编程开发
点赞
收藏

51CTO技术栈公众号