已提交(committed):表示数据已经安全地保存在本地数据库中
已修改(modified):表示修改了文件,但还没保存到数据库中
已暂存(staged):表示一个已修改的文件的当前版本做了标记,使之包含在下次提交的快照中;
git log --pretty=format
git log --pretty=format:"%h - %an, %ar : %s"
%H 提交的完整哈希值
%h 提交的简写哈希值
%T 树的完整哈希值
%t 树的简写哈希值
%P 父提交的完整哈希值
%p 父提交的简写哈希值
%an 作者名字
%ae 作者的电子 件地址
%ad 作者修订日期(可以用 --date=选项来定制格式)
%ar 作者修订日期 按多久以前的方式显示
%cn 提交者的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期 距今多长时间
%s 提交说明
git log的常用选项
git log --pretty=format:"%h %s" --graph
-p 按补丁格式显示每个提交引入的差异,可以接-2,表示最近2次的提交
--stat 显示每次提交的文件修改统 信息。
--shortstat 只显示 --stat 中最后的行数修改添加移除统 。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 校 和所有 40 个字符中的前几个字符。
--relative-date 使用较短的相对时间而不是完整格式显示日期 比如“2 weeks ago”
--graph 在日志旁以 ASCII 图形显示分支与合并历史。
--pretty 使用其他格式显示历史提交信息。可用的 项包括 oneline、short、full、fuller 和 format(用来定义自己的格式)
--oneline --pretty=oneline --abbrev-commit 合用的简写。
git log 限制输出长度
git log --since=2.weeks
git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10
-01" --before="2008-11-01" --no-merges -- t/
合并提交
按照你代码仓库的工作流程记录中可能有为数不少的合并提交,它们所包含的信息通常并不
多。 为了避免显示的合并提交弄乱历史记录,可以为 log 加上 --no-merges选项。
-<n> 仅显示最近的 n 条提交。
--since, --after 仅显示指定时间之后的提交。
--until, --before 仅显示指定时间之前的提交。
--author 仅显示作者匹配指定字符串的提交。
--committer 仅显示提交者匹配指定字符串的提交。
--grep 仅显示提交说明中包含指定字符串的提交。
-S 仅显示添加或删除内容匹配指定字符串的提交。
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了,此时可以运行带有 --amend 选项的提交命令来重新提交
git commit --amend
这个命令会将暂存区中的文件提交。如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令),
那么快照会保持不变,而你修改的只是提交信息
取消暂存的文件
git reset HEAD README.md
git remote -v
git remote add xx http://github.com/xxx/xx
git remote show origin
git remote rename xxx aaa
git remote remove xxx
git tag -l '*ab*'
// 附注标签,annotated
git tag -a '' -m ''
git show v1.4
// 轻量标签,lightweight
git tag v1.4
// 在指定提交上打标签
git tag -a v1.2 9fceb02
// 将本地分支全部推到远程仓库
git push origin --tags
git tag -d v1.2
git push origin :refs/tags/<tagname>
git push origin --delete <tagname>
检出标签
git checkout tag 这会使你的仓库处于“分离头指针(detached HEAD)”的状态——这个状态有些不好的副作用:
在"分离头指针"状态下,如果你做了某些改动然后提交它们,标签不会发生变化,但你的新提交将不属于任何分支,
并且将无法访问,除非通过确切的提交哈希才能访问。因此,如果你需要进行更改,比如修复旧版本中的错误,name通胀需要创建一个新分支:
git checkout -b version2 v2.0.0
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status