cherry-pick
cherry-pick命令复制一个提交点所做的工作,把它完整的应用到当前分支的某个提交点上。rebase可以认为是自动化的线性的cherry-pick。
例如执行git cherry-pick 2c33a :
正反过程对比
理解了上面晦涩的几个命令,我们来从正反两个方向对比下版本在本地的3个阶段之间是如何转化的。如下图(history是本地仓库):
如果觉得从本地工作目录到本地历史库每次都要经过index暂存区过渡不方便,可以采用图形右边的方式,把两步合并为一步。
Some Tips
如何管理空文件夹
git本身不会对空文件夹进行版本控制,如果希望项目被clone后自带一些空目录,那么可以:
在要被管理的空目录下创建.gitignore文件。
在.gitignore文件内写入如下代码。第一行忽略所有文件。第二行除了.gitignore文件不被忽略。
*
!.gitignore
用git实现远程备份
git本地仓库的初始化采用git init . 即可。如果需要搭建异地备份,除了可以使用开源的gitlab等来搭建服务器外,还可以git --bare init . 来初始化远服务器仓库,然后把本地仓库推送到服务器仓库。这样可以轻松实现代码或文档的异地备份,即使把代码备份到本地也是可以的(这或许可以避免rm -rf *的悲剧哦):
git remote add origin git://127.0.0.1/abc.git
然后建立本地到本地的ssh信任关系,enjoy yourself!
无密码登陆git服务器
调试技巧:ssh -v git@github.com
GIT与知识管理
日常工作中,我习惯用git来管理github和本地的代码;也用git来管理各种配置文件,例如.vimrc,.bashrc等,以及各种技术文档。我的博客用vim+markdown来编写,也用git来做版本控制,很方便。感谢linus大神为我们写了这么好的工具!
欢迎批评指正!