git

git学习

pro git

Posted by diqi on July 2, 2021

git 基础

git文件三种状态

已提交(committed):表示数据已经安全地保存在本地数据库中
已修改(modified):表示修改了文件,但还没保存到数据库中
已暂存(staged):表示一个已修改的文件的当前版本做了标记,使之包含在下次提交的快照中;

git log

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

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

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