Git
初次运行 Git 前的配置
第一个要配置的是你个人的用户名称和电子邮件地址
如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。
- $ git config --global user.name “John Doe”
-
$ git config --global user.email johndoe@example.com
差异分析工具
- $ git config --global merge.tool vimdiff
查看配置信息
- $ git config --list
获取帮助
-
$ git help
指的是想要查询的指令,如config,pull等
Git 基础
仓库操作
-
取得项目的 Git 仓库
-
在工作目录中初始化新仓库
- $ git init
-
文件想要纳入版本控制
- git add index.html
- git commit -m ‘这是第一个Git’
-
-
从现有仓库克隆
-
git clone [url] [name]
url指的是想要克隆项目的地址
name指的是自定义新建项目的目录名称
例如:xxxxxx.git robby
-
-
记录每次更新到仓库
-
检查当前文件状态
- $ git status
-
跟踪新文件
-
git add 文件
- 文件已被跟踪,并处于暂存状态
-
-
忽略某些文件
-
创建一个名为 .gitignore 的文件
- vim .gitignore
$ cat .gitignore *.[oa] *~ 第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的 第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本 - 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。 - 可以使用标准的 glob 模式匹配。 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任意字符;[abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到 9 的数字)。 - 匹配模式最后跟反斜杠(/)说明要忽略的是目录。 - 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
-
-
查看已暂存和未暂存的更新
- git diff
-
查看已经暂存起来的文件和上次提交时的快照之间的差异
- git diff --cached
-
-
提交更新
-
git commit
- 这种方式会启动文本编辑器以便输入本次提交的说明
-
git commit -m “提交说明”
- 可以用 -m 参数后跟提交说明的方式,在一行命令中提交更新
-
-
跳过使用暂存区域
-
git commit -a
- Git 会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
-
-
移除文件,从暂存区域移除
-
git rm 文件
-
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f
- git rm -f 文件
-
想把文件从 Git 仓库中删除,但仍然希望保留在当前工作目录中
- git rm --cached 文件
-
递归删除当前目录及其子目录中所有 ~ 结尾的文件
- git rm *~
-
-
移动文件
-
Git 中重命名了某个文件
- $ git mv file_from file_to
-
查看提交历史
-
git log
-
-p 选项展开显示每次提交的内容差异
-
-2 则仅显示最近的两次更新
-
–stat仅显示简要的增改行数统计
-
–pretty 选项,可以指定使用完全不同于默认格式的方式展示提交历史
-
short
-
full
-
fuller
-
oneline
-
format定制要显示的记录格式
- %H 提交对象(commit)的完整哈希字串
-
%h 提交对象的简短哈希字串
-
%T 树对象(tree)的完整哈希字串
-
%t 树对象的简短哈希字串
-
%P 父对象(parent)的完整哈希字串
-
%p 父对象的简短哈希字串
-
%an 作者(author)的名字
-
%ae 作者的电子邮件地址
-
%ad 作者修订日期(可以用 -date= 选项定制格式)
-
%ar 作者修订日期,按多久以前的方式显示
-
%cn 提交者(committer)的名字
-
%ce 提交者的电子邮件地址
-
%cd 提交日期
-
%cr 提交日期,按多久以前的方式显示
-
%s 提交说明
-
-
撤消操作
-
$ git commit --amend
此命令将使用当前的暂存区域快照提交。如果刚才提交完没有作任何改动,直接运行此命令的话,相当于有机会重新编辑提交说明,但将要提交的文件快照和之前的一样。
-
取消已经暂存的文件
git status 的命令输出
“Changes to be committed” 下面括号中有提示
-
取消对文件的修改(慎用)
- git checkout – 文件
远程仓库的使用
-
查看当前的远程库
-
git remote
- origin默认使用这个名字来标识你所克隆的原始仓库
-
git remote -v
- 显示对应的克隆地址
-
-
添加远程仓库
- git remote add [shortname] [url]
-
从远程仓库抓取数据
此命令会到远程仓库中拉取所有你本地仓库中还没有的数据
-
git fetch [remote-name]
- 手动合并
-
git pull
- 自动抓取数据下来,然后将远端分支自动合并到本地仓库中当前分支(nice)
-
-
推送数据到远程仓库
-
git push [remote-name] [branch-name]
remote-name服务名称
branch-name分支名称
例:git push origin master
-
-
查看远程仓库信息
- git remote show [remote-name]
-
远程仓库的删除和重命名
- git remote rename 旧 新
打标签
-
列显已有的标签
- git tag
-
新建标签
-
轻量级的(lightweight)git tag
- 轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用
-
含附注的(annotated)git tag -a
-
实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证
-
签署标签git tag -s
- 如果你有自己的私钥,还可以用 GPG 来签署标签
-
-m 选项则指定了对应的标签说明
-
-
验证标签
- git tag -v [tag-name]
-
后期加注标签
- 先查: git log --pretty=oneline
- 再加入:git tag -a v1.2 校验符
-
分享标签
默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行 git push origin [tagname] 即可
- 分享一条:git push origin [tagname]
- 分享全部:git push origin --tags
-