Git 提交
git commit 提交命令将暂存区内容添加到本地仓库中,用来记录版本库的变更。Git会为任何有变换的文件创建新的blob对象,对有变化的目录创建新的树对象,对于未改动的文件和目录则会沿用之前的blob与树对象。版本库中的变更和提交是一一对应的关系:提交是将变更引入版本库的唯一方法,任何版本库中的变更都必须由一个提交引入。
提交暂存区到本地仓库中:
$ git add <file> # 将文件存到暂存区
$ git commit -m [message] # 将暂存区所有文件提交到版本库,[message] 可以是一些备注信息。
$ git commit [file1] [file2] ... -m [message] # 将暂存区指定文件提交到版本库
如果没有设置 -m 选项,Git 会尝试为你打开一个编辑器以填写提交信息。 如果 Git 在你对它的配置中找不到相关信息,默认会打开 vim,然后在vim中添加提交信息。
如果觉得 git add 提交缓存的流程太过繁琐,Git 也允许用 -a 选项跳过这一步。命令格式如下:
$ git commit -a
# 示例,对所有修改了的文件进行提交
$ git commit -am "修改文件"
Git 查看提交历史
Git 提交历史一般常用两个命令:
- git log - 查看历史提交记录。
- git blame <file> - 以列表形式查看指定文件的历史修改记录。
git log
显示提交历史的主要命令是git log,这个命令有很多参数选项。一些常用命令如下:
$ git log # 列出历史提交记录
$ git log --oneline # 用online参数选项来查看历史记录的简洁的版本
$ git log --graph # 查看历史中什么时候出现了分支、合并
$ git log --reverse # 逆向显示所有日志
一些高级用法:
$ git log --author # 查找指定用户的提交日志
# 示例, Git 项目中 Hanscal 提交的部分
$ git log --author=Hanscal --oneline -5
$ git log --since --before # 指定日期,也可以用--until和--after
# 示例, Git 项目中三周前且在四月十八日之后的所有提交
$ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
git blame
此命令可以显示一个文件中的每一行最后是谁修改的和哪次提交做出了变更,是以列表形式显示修改记录:
$ git blame <filename>
# 示例
$ git blame README.md