@demonly
2017-10-14T04:03:39.000000Z
字数 2591
阅读 2712
零碎知识
git init
初始化仓库
git clone[URL]
从网络上复制仓库,例如
$ git clone git://github.com/schacon/grit.git
git 仓库下的文件有四种状态
git status
查看工作目录下所有文件的状态。
git add [file]
将文件存入暂存区,提交之后才会进入库中。这个命令也用于开始跟踪没有被跟踪的文件。
git diff
查看未暂存的文件与暂存区文件的差异。
--staged:查看暂存区文件与上次提交的文件的差异。
git commit
将暂存区的文件提交到库中。默认情况下执行这条命令之后会调出文本编辑器以便输入本次提交的说明。
-m [参数]:提交说明。
-a:将所有已跟踪的文件暂存并提交,这样就可以省去暂存的步骤。
git rm [file]
从工作目录中删除文件。如果文件在被删除之前被修改并暂存在暂存区中,那么需要加上
-f
强制删除。
--cached:可以仅在跟踪文件清单中删除,而不在工作目录中删除。文件名同样可以采用 glob 模式。
有的文件是不需要纳入 git 管理,也不希望出现在未被跟踪列表中的。可以创建一个名为.gitignore
的文件,列出要忽略的文件模式。.gitignore 的文件规范如下。
所有空行或者以注释符号
#
开头的行都会被 git 忽略
可以使用标准的 glob 模式匹配。
匹配模式最后跟上/
说明要忽略的是目录
匹配模式最后跟上!
表示忽略指定模式以外的文件或目录。
glob 模式还是一种简化的正则表达式。
*
匹配零个或多个任意字符;
[abc]
匹配任何一个列在方括号中的字符;
?
只匹配一个任意字符;
[0-9]
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。
git log
查看提交历史。默认不传入任何参数,会按照时间列出所有更新。每次更新显示为四行,分别是 SHA-1校验、作者名字、电子邮件地址、提交时间和提交的说明。
这条命令有以下选项:
-p 选项展开显示更新的内容。
--stat 显示简要的增改行数统计。
--shortstat 只显示 --stat 中最后的行数增改统计。
--name-only 仅在提交信息后显示已修改的文件清单。
--name-status 显示新增、修改、删除的文件清单。
--abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。
--relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)。
--graph 显示 ASCII 图形表示的分支合并历史。
--pretty 使用其他格式的方式展示提交历史。例如:
git log --pretty=oneline
- oneline:将每个提交的信息都放在独自一行中显示。并且仅显示 SHA-1校验和说明信息。
short:仅显示 SHA-1校验、作者名字、邮箱和说明信息。
full:显示 author 和commit 双方的 short 格式信息。
fuller:显示 author 和commit 双方的默认格式信息。
format:以自定义格式显示信息。例如git log --pretty=format:"%h - %an, %ar : %s"
以下是这些格式占位符的意义
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明
-[n]:仅显示最近的 n次提交。
--since、--:after:仅显示指定时间之后的提交。
--until、--before:仅显示指定时间之前的提交。
--author:仅显示指定作者的提交。
--commiter:仅显示指定提交者的提交。
git commit -amend
用新的提交覆盖上一次提交。
git reset HEAD
回退版本。HEAD^表示上一个版本,HEAD^^表示上两个版本,HEAD~{n}表示上n个版本。
git checkout --文件名
取消修改。
git remote
显示已配置的远程仓库,git 默认使用 origin 来标识克隆的原始仓库。
-v:显示对应的克隆地址。
git remote add [shortname] [url]
添加一个新的远程仓库并且命名。
git fetch [remote-name]
从远端仓库拉取主干分支(master)的更新到本地仓库,需要手动合并。
git pull
跟踪远端仓库,自动拉取数据并与本地仓库合并。只有在设置了跟踪的情况下才可以使用。
git push [remote-name] [branch-name]
将本地仓库的信息推送到远端仓库。
git remote show [remote-name]
查看远端仓库的信息。
git remote rename [remote-name] [new-remote-name]
重命名远程仓库。
git remote rm [remote-name]
移除远程仓库。
git tag [参数] [tag-name]
创建一个标签,不传入标签名就是列出已有的版本标签。
-l:根据标签名搜索标签。
-a:创建一个含附注的标签,附注在命令后面用-m 添加。如果不使用-m,git 会启动文本编辑器。这条指令也可以对之前的某次提交补加标签,在指令最后要加上提交的 SHA-1或者是前几位字符。
-s:在-a 的基础上用 GPG 签署标签,在拥有私钥时才可以使用。
-v:调用 GPG 来验证签名,只有在拥有签署者的公钥时才可以验证。
git show [tag-name]
显示对应版本的版本信息以及提交对象(包含提交信息的对象)。
git push 指令默认不会把标签推送到远端服务器上。在指令后面加[tag-name]可以将指定标签推送到远端服务器。在指令后面加--tags 可以一次将所有标签推送到远端服务器。