1. Git自动补全
|
1
2
|
cd ~
curl https:
/
/
raw.github.com
/
git
/
git
/
master
/
contrib
/
completion
/
git
-
completion.bash
-
o ~
/
.git
-
completion.bash
|
然后,添加下面几行到你的 ~/.bash_profile 文件中:
1
2
3
|
if
[
-
f ~
/
.git
-
completion.bash ]; then
. ~
/
.git
-
completion.bash
fi
|
尽管早些时候我们已经提到这个,但是强调的不够充分。如果你想使用git的全部功能特性,
你绝对应该切换到命令行界面!
2. 在 Git 中忽略文件
|
1
2
3
4
5
|
*
.pyc
*
.exe
my_db_config
/
!main.pyc
|
3. 是谁弄乱了我的代码?当事情出错时,先去指责别人是人类的天性之一。如果你的产品服务器挂了,使用git blame命令可以很容易找出罪魁祸首。这个命令可以将文件中的每一行的作者、最新的变更提交和提交时间展示出来。
在下面的截图中你可以看到命令是如何在更大的目录中搜寻。
|
4. 查看仓库历史记录
|
5. 绝对不要丢失对Commit的跟踪
|
6. 暂存文件的部分改动
|
1
|
git add
-
p [file_name]
|
我们来演示一下在 file_name 文件中添加了3行文字,但只想提交第一行和第三行。先看一下 git diff 显示的结果:
然后再看看在 add 命令中添加 -p 参数是怎样的?
看上去,Git 假定所有的改变都是针对同一件事情的,因此它把这些都放在了一个块里。你有如下几个选项:
-
输入 y 来暂存该块
-
输入 n 不暂存
-
输入 e 手工编辑该块
-
输入 d 退出或者转到下一个文件
-
输入 s 来分割该块
在我们这个例子中,最终是希望分割成更小的部分,然后有选择的添加或者忽略其中一部分。
正如你所看到的,我们添加了第一行和第三行而忽略了第二行。之后你可以查看仓库状态之后并进行提交。
7. 压缩多个Commit
|
1
|
git rebase
-
i HEAD~[number_of_commits]
|
如果你想要压缩最后两个commit,你需要运行下列命令。
1
|
git rebase
-
i HEAD~
2
|
运行该命令时,你会看到一个交互界面,列出了许多commit让你选择哪些需要进行压缩。理想情况下,你选择最后一次commit并把其它老commit都进行压缩。
然后会要求你为新的commit录入提交信息。这一过程本质上重写了你的commit历史。
8. Stash未提交的更改
|
1
|
git stash
|
希望检查stash列表,你可以运行下面的命令:
1
|
git stash
list
|
如果你想要解除stash并且恢复未提交的变更,你可以进行apply stash:
1
|
git stash
apply
|
在屏幕截图中,你可以看到每个stash都有一个标识符,一个唯一的号码(尽管在这种情况下我们只有一个stash)。如果你只想留有余地进行apply stash,你应该给apply添加特定的标识符:
1
|
git stash
apply
stash@{
2
}
|
9.检查丢失的提交尽管 reflog 是唯一检查丢失提交的方式。但它不是适应用于大型的仓库。那就是 fsck(文件系统检测)命令登场的时候了。
这里你可以看到丢掉的提交。你可以通过运行 git show [commit_hash] 查看提交之后的改变或者运行git merge [commit_hash] 来恢复到之前的提交。 git fsck 相对reflog是有优势的。比方说你删除一个远程的分支然后关闭仓库。 用fsck 你可以搜索和恢复已删除的远程分支。 |
10. Cherry Pick
|
1
|
git cherry
-
pick [commit_hash]
|
尽管我们这次完成了一次干净的cherry-pick,你也应该意识到这个命令可能会产生冲突。所以用它时请无比小心。
总结说着说着就到了文章的最后,我认为这些技巧会让你的 Git 水平提升到一个新的高度。Git 是最棒的,它几乎能实现你所能想到的事情。因此,要经常挑战自己的Git水平。最后你很有可能会学到新的东西。 |