基础
对待数据的方式
几乎所有版本控制工具都是记录与初始文件的差异,而 Git 是记录快照,每次提交更新时,就是当前工作目录下的所有文件的完整数据,而不是差异,当然如果提交时,文件没有被修改,不再重新存储该文件,而是指向上次存储的文件。
假设提交了5次,对于工作目录的文件A,在第三和第五次提交时有修改
1 | # 其他版本控制 |
在Linux及托管网站上默认的编码都是utf-8,而Windows系统默认编码不是采用utf-8,所以Git 客户端在Windows下总是会有一些问题。一个解决方案就是通过设置git编码为utf-8。
Git 配置文件 .gitconfig
,系统配置位于/etc/gitconfig
(Windows 该文件在Git安装目录下),全局配置位于用户目录下,项目配置位于仓库目录下。
1 | git config --list # 显示当前的Git配置 |
配置别名
1 | git config --global alias.ci "commit" |
如果想要执行外部命令,而不是一个 Git 子命令,可以在命令前面加入 !
符号。
如果是版本库级别的忽略用.gitignore
;如果仅仅是个人的忽略用.git/info/exclude
,不会将此设置传播出去
文件 .gitignore 的格式规范如下:
/
)开头防止递归。/
)结尾指定目录。!
)取反。所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号(*
)匹配零个或多个任意字符;[abc]
匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?
)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9]
表示匹配所有 0 到 9 的数字)。 使用两个星号(*
) 表示匹配任意中间目录,比如a/**/z
可以匹配 a/z
, a/b/z
或 a/b/c/z
等。
1 | # 此为注释 – 将被 Git 忽略 |