[关闭]
@demonly 2017-10-14T04:03:39.000000Z 字数 2591 阅读 2712

GIT 基础

零碎知识


取得项目的 git 仓库

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校验、作者名字、电子邮件地址、提交时间和提交的说明。
这条命令有以下选项:

撤销操作

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 可以一次将所有标签推送到远端服务器。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注