10 个迅速提升你 Git 水平的提示
2014-09-26 11:20
267 查看
转自:http://www.oschina.net/translate/10-tips-git-next-level
英文原文:10 Tips to Push Your Git Skills to the Next Level
最近我们推出了两个教程:熟悉Git的基本功能和让你在开发团队中熟练的使用Git . 我们所讨论的命令足够一个开发者在Git使用方面游刃有余。在这篇文章中,我们试图探索怎样有效的管理你的时间和充分的使用Git提供的功能。 注:本文中,一些命令包含了方括号中的部分内容(例如:git add -p [file_name]).在这些示例中,你将插入必要的数字、标示符等等,如果没有方括号。 |
假使你使用命令行工具运行Git命令,那么每次手动输入各种命令是一件很令人厌烦的事情。 |
?
你绝对应该切换到命令行界面!
你是不是很烦那些编译过的文件 (比如 .pyc) 出现在你的 Git 仓库中?或者说你已经受够了已经把它们都加进了 Git 仓库?好了,这有个办法可以让你告诉 Git 忽略掉那些特定的文件和文件夹。只需要创建一个名为 .gitignore 然后列出那些你不希望 Git 跟踪的文件和文件夹。你还可以添加例外,通过使用感叹号(!)。 |
当事情出错时,先去指责别人是人类的天性之一。如果你的产品服务器挂了,使用git blame命令可以很容易找出罪魁祸首。这个命令可以将文件中的每一行的作者、最新的变更提交和提交时间展示出来。 |
在下面的截图中你可以看到命令是如何在更大的目录中搜寻。
上一节我们已经学习了如何使用 git log ,不过,这里还有三个你应该知道的选项。 |
假设你不小心提交了些你不想要的东西,不得不做一次强制重置来恢复到之前的状态。然后,你意识到在这一过程中你丢失了其它一些信息并且想要把它们找回来,或者至少瞅一眼。这正是git reflog可以做到的。 |
一般情况下,创建一个基于特性的提交是比较好的做法,意思是每次提交都必须代表一个新特性的产生或者是一个bug的修复。如果你修复了两个bug,或是添加了多个新特性但是却没有提交这些变化会怎样呢?在这种情况下,你可以把这些变化放在一次提交中。但更好的方法是把文件暂存(Stage)然后分别提交。 |
然后再看看在 add 命令中添加 -p 参数是怎样的?
看上去,Git 假定所有的改变都是针对同一件事情的,因此它把这些都放在了一个块里。你有如下几个选项:
输入 y 来暂存该块
输入 n 不暂存
输入 e 手工编辑该块
输入 d 退出或者转到下一个文件
输入 s 来分割该块
在我们这个例子中,最终是希望分割成更小的部分,然后有选择的添加或者忽略其中一部分。
正如你所看到的,我们添加了第一行和第三行而忽略了第二行。之后你可以查看仓库状态之后并进行提交。
当你提交代码进行代码审查时或者创建一次pull request (这在开源项目中经常发生),你的代码在被接受之前会被要求做一些变更。于是你进行了变更,并且直到下一次审查之前你没有再次被要求进行变更过。在你知道又要进行变更之前,你已经有了一些额外的commit。理想情况下,你可以用rebase命令把多个commit压缩成一个。 |
?
然后会要求你为新的commit录入提交信息。这一过程本质上重写了你的commit历史。
你正在修改某个bug或者某个特性,又突然被要求展示你的工作。而你现在所做的工作还不足以提交,这个阶段你还无法进行展示(不能回到更改之前)。在这种情况下, git stash可以帮助你。stash在本质上会取走所有的变更并存储它们为以备将来使用。stash你的变更,你只需简单地运行下面的命令- |
?
如果你想要解除stash并且恢复未提交的变更,你可以进行apply stash:
?
?
尽管 reflog 是唯一检查丢失提交的方式。但它不是适应用于大型的仓库。那就是 fsck(文件系统检测)命令登场的时候了。 |
这里你可以看到丢掉的提交。你可以通过运行 git show [commit_hash] 查看提交之后的改变或者运行git merge [commit_hash] 来恢复到之前的提交。
git fsck 相对reflog是有优势的。比方说你删除一个远程的分支然后关闭仓库。 用fsck 你可以搜索和恢复已删除的远程分支。
我把最优雅的Git命令留到了最后。cherry-pick命令是我目前为止最喜欢的git命令,既是因为它的字面意思,也因为它的功能。 |
尽管我们这次完成了一次干净的cherry-pick,你也应该意识到这个命令可能会产生冲突。所以用它时请无比小心。
说着说着就到了文章的最后,我认为这些技巧会让你的 Git 水平提升到一个新的高度。Git 是最棒的,它几乎能实现你所能想到的事情。因此,要经常挑战自己的Git水平。最后你很有可能会学到新的东西。 |
相关文章推荐
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示(转)
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 【转】10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示【转】
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示【转】
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 10 个迅速提升你 Git 水平的提示
- 10个迅速提升你Git水平的提示