PUB:20140620 Tips to Push Your Git Skills to the Next Level

@CNprober 翻译的不错!
This commit is contained in:
wxy 2014-07-25 15:27:20 +08:00
parent d90f4432e4
commit cd8b516b53

View File

@ -1,11 +1,9 @@
CNprober 翻译完成... 619913541
10招让你的Git技能提升一个台阶
已经会用Git了不会这十招怎么行
================================================================================
之前我们发了一些教程让你熟悉[Git基础][1]和[在团队合作环境中使用Git][2].我们讨论的这些Git命令足够让一个开发者在Git的世界里生存下去。在这篇教程里我们试着探索如何高效地管理你的时间以及如何充分利用Git提供的特性。
> 注意:这里介绍的命令中有的包含方括号(例如:`git add -p [file_name]`)。在这些例子中,你应该用你自己的数字标识符等替代方括号里的内容,并且去掉方括号。
> 注意:这里介绍的命令中有的包含方括号(例如:`git add -p [file_name]`)。在这些例子中,你应该用你自己的数字标识符等替代方括号里的内容,并且去掉方括号。
### 1. Git自动补全 ###
@ -62,7 +60,7 @@ CNprober 翻译完成... 619913541
假设你提交了一些不需要的东西然后你进行了hard重置回到之前的状态。后来你发现在这个过程中你丢失了其他一些重要的信息你想要把这些信息找回来或者至少可以查看一下这些信息。这就需要`git reflog`帮忙。
简单的`git log`只能告诉你最近的提交,这个提交的父提交,父提交的父提交,等等。但是`git reflog`是一个HEAD指向的提交的列表。记住这个列表依赖于你自己的操作环境它不是库的一部分也不包含在push或者merge中。
简单的`git log`只能告诉你最近的提交,这个提交的父提交,父提交的父提交,等等。但是`git reflog`是一个HEAD指向的提交的列表。记住这个列表依赖于你自己的本地操作环境它不是库的一部分也不包含在push或者merge中。
如果执行`git log`命令,可以看到提交历史,这是我的库的一部分:
@ -74,7 +72,7 @@ CNprober 翻译完成... 619913541
### 6. 暂存文件的一部分更改以便进行一次提交 ###
通常依据特性来提交是一个好的实践方法意思是说每一个提交都只添加一个特性或者修复一个bug。想一下如果你一次修复了两个bug或者添加了两个特性但是都还没有提交该怎么办。这种场景下你可以将他们一起提交。但是有一个更好的办法单独暂存这些文件然后分开提交。
通常依据特性来提交是一个好的实践方法意思是说每一个提交都只添加一个特性或者修复一个bug。想一下如果你一次修复了两个bug或者添加了两个特性但是都还没有逐个提交该怎么办。这种场景下,你可以将他们一起提交。但是有一个更好的办法:单独暂存这些文件,然后分开提交。
让我们假设你对一个文件做了多个更改,然后想让这些更改分开提交。这时,我们用带`-p`的添加命令。
@ -88,7 +86,7 @@ CNprober 翻译完成... 619913541
![Running add with -p](http://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2014/06/1402946450git-ninja-07.png)
似乎Git认为所有的更改都是同一个目的的一部分所以把他们分组到同一个块里。这时你可以
看起来Git认为所有的更改都是同一个目的的一部分所以把他们分组到同一个块里。这时你可以
- 输入 y 暂存块
- 输入 n 不暂存块
@ -100,13 +98,13 @@ CNprober 翻译完成... 619913541
![Adding all hunks](http://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2014/06/1402946452git-ninja-08.png)
如你所见我们已经添加了第1和第3行忽略了第2行。你可以看到库的状态并且进行一次提交。
如你所见,我们已经逐个添加了第1和第3行忽略了第2行。你可以看到库的状态并且进行一次提交。
![Repository after selectively adding a file](http://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2014/06/1402946454git-ninja-09.png)
### 7. 合并多个提交 ###
为了进行核查或者发起一个合并请求(这经常发生在开源项目里),对代码进行了修改提交。但在最后代码被接受之前,你也许会被要求修改你的代码。于是你修改代码,但是下一次核查的时候又一次被要求进行修改。不知不觉中你就已经有了好几个提交。理论上你应该用rebase命令把他们合并起来。
为了进行核查或者发起一个合并请求(这经常发生在开源项目里),对代码进行了修改提交。但在最后代码被接受之前,你也许会需要修改你的代码。于是你修改代码,但是下一次核查的时候又一次需要进行修改。不知不觉中你就已经有了好几个提交。理论上你应该用rebase命令把他们合并起来。
git rebase -i HEAD~[number_of_commits]
@ -118,7 +116,7 @@ CNprober 翻译完成... 619913541
![Git squash interactive](http://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2014/06/1402946455git-ninja-10.png)
接着你被要求提供一个对新提交的说明。这个过程会重写你的提交历史。
接着你应该提供一个对新提交的说明。这个过程会重写你的提交历史。
![Adding a commit message](http://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2014/06/1402946457git-ninja-11.png)
@ -182,7 +180,7 @@ CNprober 翻译完成... 619913541
via: http://www.sitepoint.com/10-tips-git-next-level/
译者:[love_daisy_love](https://github.com/CNprober) 校对:[校对者ID](https://github.com/校对者ID)
译者:[love\_daisy\_love](https://github.com/CNprober) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出