# Git
# 删除分支
# 修改分支名
| git branch -m <原分支名> <新分支名> |
# 查看简明状态说明
- git 目录中的文件状态包含:是否跟踪,是否修改,是否已存入暂存区
- 参数的一个横杠表示缩写,两个横杠表示全程
| git status -s |
| |
| M README |
| MM Rakefile |
| A lib/git.rb |
| M lib/simplegit.rb |
| ?? LICENSE.txt |
# 忽略文件
添加一个名为 .gitignore
的文件,列出要忽略的文件的模式
# .gitignore
文件格式规范
- 所有空行或者以 # 开头都会被 Git 忽略 (注释符号)
- 可以使用标准的 glob 模式(shell 所使用的简化正则)匹配,它会递归整个工作区
- 匹配模式可以以 (/) 开头防止递归
- 以 (/) 结尾指定目录
- 要忽略指定模式以外的文件或目录,可以在模式前加上叹号 (!) 取反
- 星号 (*) 匹配零个或多个任意字符
- [
abc
] 匹配任何一个列在括号中的字符 - 文件 (?) 只匹配一个任意一个字符
- [0-9] 表示匹配所有 0 到 9 的数字,在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配
- 使用两个 (****) 表示匹配任意中间目录,比如 a//z 可以匹配 a/z,a/b/z,a/b/c/z 等
- 详情
| *.a |
| !lib.a |
| /TODO |
| build/ |
| doc/*.txt |
| doc/**/*.pdf |
# 查看修改的具体内容
| git diff |
| git diff --staged |
注意
: git status
只能查看文件变化的状态,并不能查看具体修改了哪些内容。使用 git diff
可以查看具体变化的内容
# 查看提交历史
不传入任何参数的默认情况先, git log
会按时间先后顺序列出所有的提交,最新的更新排在最上面
| git log |
| git log -p -2 |
| git log --stat |
| |
| |
| git log --pretty=oneline |
| |
| git log --pretty=format:"%h - %an,%ar:%s" |
常见的 format 选项
# 撤销操作
# 远程仓库中抓取与拉取
此命令只会将数据下载到本地仓库 -- 它并不会自动合并或者修改你当前的工作,必须手动将其合并
此命令会自动抓取后合并该远程分支到当前分支
默认情况下, git clone
会自动设置本地 master 分支跟踪克隆的远程仓库的 master
分支 (或其它名字的默认分支)。运行 git pull
通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支
# 打标签
| git tag |
| git tag -l "v2.0" |
| git tag -list "v2.0" |
- 轻量标签:本质上是将提交和存储到一个文件中 --- 没有保存任何其它信息
| git tag v1.4-lw |
| git show v1.4-lw |
- 附注标签:是存储在 Git 数据库中的一个完整对象,它们是可以被校验的,其中包含打标签者的名字,电子邮箱地址,日期时间,此外还有一个标签信息,并且可以使用 GNU Privacy Guard 签名并验证。通常会建议创建附注标签。
| git tag -a v1.4 -m "my version 1.4" |
# 共享标签
git push 命令并不会传送标签到远程仓库服务器上,在创建完标签后必须显式地推送标签到贡献服务器上,这个过程就像共享远程分支一样
| git push origin v1.5 |
| git push origin --tags |
# 删除标签
| git tag -d v1.4-lw |
| git push <remote> :refs/tags/v1.4-lw |
| |
| git push <remote> --delete <tagname> |
# 命令别名
| git config --global alias.co checkout |
| git config --global alias.br branch |
| git config --global alias.ci commit |
| git config --global alias.st status |
# 修改分支名
首先保证本地代码是最新的
| git branch -m oldbranchName newbranchname |
| git push origin :oldbranchName |
| git push origin --delete oldbranchName |
| |
| |
| git push --set-uostream origin newbranchname |
- Workspace :工作区
- Index/Stage:暂存区
- Repository: 仓库区 (或本地仓库)
- Remote:远程仓库
# 改名文件并将这个改名放入暂存区
| git mv [file-original] [file-renamed] |
# 参考资料