摘要:问题 在使用git diff 展示c/c++文件修改内容时,除了显示修改上下文外,输出还贴心的展示了修改所在的函数。尽管这个展示并不总是准确,但是能够做到大部分情况下准确也已经相当不错:是不是git内置了c语言这种高级语言的语法分析器?另外,git的这种分析在什么情况下会不准确? 例如,在下面的例子
阅读全文
摘要:一、submodule功能 有时候,一个项目会引用一些外部模块,特别是一些开源项目之间经常会有依赖(或者被依赖)。svn可以通过external来引用外部库,git则通过submodule实现。但是,git对于submodule的处理比较简单。事实上,git submodule是一个bash脚本文件
阅读全文
摘要:一、git内部objects文件的格式 在执行git cat-file命令的时候,可以看到提示文件的类型可以有四种:blob、tree、commit和tag。其中的blob和tree是比较直观的概念,也是比较常用的概念,tag相对更加简单,而这个commit是通常被忽视的一种类型。但是这种类型恰好又
阅读全文
摘要:一、describe的功能 git的提交版本号是一个hash值,所以版本号本身没有太大意义,这显然不太符合大家的认知习惯,就像IP地址没有域名有意义一样的原理。但是如何描述这些commitid呢?git鼓励大家频繁创建新的分线,这样可以结合分支名称来描述某个提交记录,这个就是git describe
阅读全文
摘要:一、git的push命令 git的commit只是本地修改,不用担心对于远端版本库的影响。当你不需要考虑后果的时候,通常就会比较胆大。对应的,push的修改会在远端生效,所以这个修改就需要小心谨慎一些。最为方便和常用的当然是只推送当前工作分支(branch)的修改,这是比较直观的期望运行效果。但是这
阅读全文
摘要:一、背景说明 对于某些git项目,可能只有少数几个人(假设为Maintainer——M)有何如权限,其它人的合入需要这些有权限的开发者(假设为Developer——D)合入,当然,这通常的流程都是某个程序员fork自己的分支,合入,然后有M合入主线分支。这个流程是假设M和P都经过公共的远端服务器进行
阅读全文
摘要:一、git stash的man手册中对该命令的说明 git需要保存的内容:1、本地修改并且已经通过git add添加到缓存区的2、本地修改但是还没有添加到缓存区的3、可能还包括本地添加但是没有track的 DISCUSSION A stash is represented as a commit w
阅读全文