一、Git基础知识
1.1 git的历史
发明linux的人发明了git,原因是当时一个公司不再提供免费的源代码版本管理工具,然后他自己写了一个。
1.2 git的优势
1、git模型提供了一个本地环境,在其中可以使用一个服务器端仓库(git术语中称为远程)的副本进行开发工作。修改之后,可以将本地内容更新到远程端。
开发过程中本地不需要连网。
2、SHA1,Git的内部使用SHA1作为内容的密钥来计算,所有不可能在git知情的情况下变更git所管理的内容。
3、git允许遍历之前的版本,编辑并更新它们。
1.3 关键概念
git是分布式的,每一台机器都有仓库的完整副本,且包含历史记录。
一般会有一个在线的服务器作为托管服务器,但这个服务器并不是必须的,它的存在只是为了有一个一直在线且地址固定的git终端,用于同步代码。
在git中,服务端被称为远程仓库(或者称为远程),复制操作称为克隆,克隆到本机进行工作银行称为本地环境,在本地环境进行的谋划变更银行称为提交。
1.4 下载安装
可以从 git-scm网站 去下载。
也可以直接下载带有GUI的smart-git
安装之后,在终端执行命令git --version
如果能正常输出版本即安装成功。
二、基本操作
2.1 核心命令
从 | 到 | 命令 | 备注 |
---|---|---|---|
工作目录 | 暂存区域 | add | 暂存本地变更 |
暂存区域 | 本地仓库 | commit | 仅提交暂存区域中的内容 |
本地仓库 | 远程仓库 | push | 在推送时同步内容 |
本地仓库 | 工作目录 | checkout | 切换当前分支、 |
远程仓库 | 本地环境 | clone | 创建本地仓库和目录 |
远程仓库 | 本地仓库 | fetch | 更新远程分支的引用 |
远程仓库 | 本地仓库和工作目录 | pull | 抓取和合并到本地分支和工作目录 |
2.2 详细操作命令
最普遍的命令是:
git <git-options> <command> <command-options> <operands>
// <git-options> 是git本身的全局选项,有些选项也可以是可执行的命令
命令 | 目的 |
---|---|
add | 将文件内容添加到索引 |
bisect | 通过二进制搜索来查找涉及缺陷的变更 |
branch | 列示、创建或删除分支 |
cherry | 找出有待应用到上游(远程分支)的提交 |
cherry-pick | 应用已有提交所涉及的一些变更 |
clone | 将仓库克隆到新目录 |
commit | 将变更记录到仓库 |
config | 获取以及设置仓库或全局配置 |
diff | 显示提交之间、提交与工作树之间等的变更 |
fetch | 下载来自另一个仓库的对象或引用 |
grep | 打印匹配一个模式的行 |
help | 显示帮助信息 |
log | 显示提交日志 |
merge | 将两个或多个开发历史合并到一起 |
mv | 移动或重命名一个文件、目录或符号链接 |
pull | 从另一个仓库或本地分支进行抓取或集成 |
push | 更新远程引用以及相关的对象 |
rebase | 将本地提交转发到更新的上游头信息 |
rerere | 将记录的解决内容重用于合并的冲突 |
reset | 将当前HEAD重新设置为指定状态 |
revert | 还原一些已有的提交 |
rm | 从工作树和索引中移除文件 |
show | 显示各种类型的对象 |
status | 显示工作树状态 |
submodule | 初始化、更新或检查子模块 |
subtree | 合并子树并且将仓库划分成子树 |
tag | 创建、列示、删除或验证一个标记对象 |
worktree | 管理多个工作树 |
命令 | 目的 |
---|---|
cat-file | 提供仓库对象的内容或类型和大小信息 |
commit-tree | 创建一个新的提交对象 |
count-objects | 统计松散对象的数量及其磁盘消耗 |
diff-index | 将树与工作树或索引进行对比 |
for-each-ref | 输出每一个引用上的信息 |
hash-object | 计算对象ID并且选择性地从一个文件中创建二进制大型对象 |
ls-files | 显示与索引和工作树中文件有关的信息 |
merge-base | 为合并找到尽可能通用的共同起源 |
read-tree | 将树信息读入索引中 |
rev-list | 以时间倒序顺序列出提交对象 |
rev-parse | 列出本地仓库中的引用 |
show-ref | 列出本地仓库中的引用 |
symbolic-ref | 读取、修改和删除符号引用 |
update-index | 将工作树中的文件内容注册到索引 |
update-ref | 更新被安全存储在引用中的对象名称 |
verify-pack | 验证打包好的Git归档文件 |
write-tree | 从当前索引中创建树对象 |
当使用命令的完整单词是需要在前面加上两个短横线,比如--global
如果使用命令的缩写,则只需要一个短横线即可,比如-g
如果同时使用多个命令,这些命令可以一并被传递,比如-am
代替-a -m
执行命令时可以使用tab
补全。