Git 进阶:10大技巧让你迅速提升
1.Git自动补全
假使你使用命令行工具运行Git命令,那么每次手动输入各种命令是一件很令人厌烦的事情。
命令:
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
2.在Git中忽略文件
Git忽略掉那些特定的文件和文件夹,只需要创建一个名为 .gitgnore然后列出那些你不希望Git跟踪的文件和文件夹。
你还可以添加例外,通过使用感叹号(!).
*.pyc
*.ext
my_db_config/
!main.pyc
3. 显示文件中每一行的作者,最新的变更提交和提交时间展示出来。
git blame [file_name]
git blame demonstration
4.查看仓库历史记录
上一节我们已经学习了如何使用git log,不过,这里还有三个你应该知道的选项。
--oneline- 压缩模式,在每个提交的旁边显示经过精简的提交哈希码和提交信息,以一行显示。
-graph- 图形模式,使用该选项会在输出的左边绘制一张基于文本格式的历史信息表示图。如果你查看的是单个分支的历史
记录的话,该选项无效。
--all- 显示所有分支的历史记录
5 绝对不要丢失对commit的跟踪
假设你不小心提交了你不想要的东西,不得不做一次强制重置来恢复到之前的状态。然后,你意识到在这一过程中
你丢失了其他一些信息并且想要把他们找回来,或者至少看一眼,这正是git reflog可以做到的。
一个简单的git log 命令可以为你展示最后一次commit,以及他的父亲,还有他父亲的父亲等等。
而git reflog则列出了head曾经指向过的一系列commit。要明白他们只存在于你本机中;而不是你的版本仓库的一部分,
一不包含在push和merge操作中。
6.暂存文件的部分改动
一般情况下,创建一个基于特性的提交是比较号的做法,意思是每次提交都必须代表一个新特性的产生或者
是一个bug的修复。如果你修复了两个bug,或者添加了多个新特性但是却没有提交这些变化会怎样呢,
在这种情况下,你可以把这些变化放在一次提交中。但更好的方法是把文件暂存(Stage)然后分别提交。
例如你对一个文件进行了多次修改并且想把他们分别提交。这种情况下,你可以在add命令中加上-p参数
git add -p [file_name]
我们来演示一下在file_name文件中添加了3行文字,但只想提交第一行和第三行。先看一下git diff 显示的结果:
7.压缩多个commit
用rebase命令把多个commit压缩成一个
git rebase -i HEAD~[number_of_commits]
如果你想要压缩最后两个commit ,你需要运行下列命令。
git rebase -i HEAD~2
9.检查丢失的提交
尽管 reflog是唯一检查丢失提交的方式。但它不是适应于大型的仓库。那就是fsck(文件系统检测)
git fsch --lost-found