git-command
我们使用 git command 看看 git 有哪些可用的命令.
command
git
[--version]显示版本[--help]显示帮助[-C <path>][-c <name> = <value>][--exec-path = <path>][--html-path][--man-path][--info-path][-p | --paginate][--no-pager][--no-replace-objects][--bare][--git-dir = <path>][--work-tree = <path>][--namespace = <name>]<command>[<args>]
中括号表示可的参数,如果自己写过命令工具,这个应该是一个很常见的需求。我们为了全面的学些 git。把知识点细化。
注意:command 后面的参数是 command 的参数,可选的参数是 git 的参数。
这些是在各种情况下使用的常见Git命令
启动工作区(另请参阅:git帮助教程)
- clone 将存储库克隆到新目录
- init 创建一个空的Git存储库或重新初始化一个现有的存储库
处理当前更改(另请参见:每天都有git帮助)
- add 将文件内容添加到索引
- mv 移动或重命名文件,目录或符号链接
- reset 将当前HEAD重置为指定状态
- rm 从工作树和索引中删除文件
检查历史记录和状态(另请参见:git help修订版)
- bisect 使用二进制搜索来查找引入了错误的提交
- grep 打印与模式匹配的行
- log 显示提交日志
- show 显示各种类型的对象
- status 显示工作树状态
成长,标记和调整您的共同历史
- branch 列出,创建或删除分支
- checkout 切换分支或还原工作树文件
- commit 将更改记录到存储库
- diff 显示提交,提交和工作树等之间的更改
- merge 将两个或多个开发历史合并在一起
- rebase 重新应用在另一个基本技巧之上的提交
- tag 创建,列出,删除或验证使用GPG签名的标签对象
协作(另请参阅:git help工作流程)
- fetch 从另一个存储库获取下载对象和参考
- pull 从另一个存储库或本地分支中提取并与之集成
- push 推送更新远程引用以及相关对象
'git help -a'和'git help -g'列出了可用的子命令和一些 概念指南。参见'git help <命令>'或'git help <概念>' 阅读有关特定子命令或概念的信息。
git 三种状态
- 已提交(committed)
- 已修改(modified)
- 已暂存(staged)
Git 项目拥有三个阶段
- 工作区
- 暂存区
- Git 目录
三个配置
- git 系统配置 git config --system
- git 用户配置 git config --global
- git 本项目配置 git config --local
查看配置
git config --list --show-origin
git config --system --list
git config --global --list
获取和配置具体的信息:
git config --global user.name 'magnesium-'
git config --global user.email '66666@qq.com'
git config --global core.editor code
项目初始化
git init
向缓存区添加文件
- 单个文件
git add *.c
git add LICENSE
- 所有文件
git add *
* 通配符,表示除去.gitignore忽略的虽有文件
提交信息
- 带有提示信息的内容
git commit -m 'your first commit-'
可能一个项目
- clone
git clone https://github.com/libgit2/libgit2 new-dir
我们制定一个新的目录 new-dir
文件状态
可以通过
git status
获取文件在 git 系统中的状态
- Untracked 未跟踪
- Unmodified 未修改的
- Modified 修改了
- Staged 已跟踪
文件标记
- A 先添加到缓存区
- M 修改过的文件
- ?? 新添加的未跟踪的文件
忽略文件
.gitignore文件- 文件的匹配规则遵循:glob 匹配模式
查看暂未缓存的文件
git diff
git diff --staged
git diff --cached
提交
git commit -m 'you message'
移除文件
rm -rf 'file.name'
git rm 'file.name'
git rm -f 'file.name'
git rm --cached 'file.name'
移动文件
git mv file-form file-to
获取历史信息
git log
git log -p -2
git log --stat
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 commit --amend
git reset HEAD CONTRIBUTING.md
git checkout -- CONTRIBUTING.md
请务必记得 git checkout -- <file> 是一个危险的命令。 你对那个文件在本地的任何修
改都会消失——Git 会用最近提交的版本覆盖掉它。 除非你确实清楚不想要对那个文件的本地
修改了,否则请不要使用这个命令。
查看远程仓库
git remote
git remote -v
添加远程仓库
git remote add pb https://github.com/paulboone/ticgit
git remote -v
抓取仓库
git remote add pb https://github.com/paulboone/ticgit
git fetch <remote>
git push origin master
git remote show <remote>
git remote rename pb paul
打标签
git tag -l
git tag --list
git tag -l "v1.8.5*"
创建标签
Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。
辅助标签
-a 参数表示 annotated
-m 参数表述提示信息
git tag -a v1.4 -m "my version 1.4"
轻量标签
git tag v1.4-lw
后期打标签
git tag -a v1.2 9fceb02
9fceb02 是提交的hash,使用 hash 后期打 tag
共享 tag
# git push 命令并不会传送标签到远程仓库服务器上
git push origin <tagname>
git push origin --tags
删除 tag
git tag -d <tagname>
git push origin --delete <tagname>
检出标签
git checkout -b version2 v2.0.0
# Switched to a new branch 'version2'
别名
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 config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
最后一次提交
git last