Git 工具
Git是什么,为什么要使用它?
- Git 是一个分布式版本控制以及源代码管理工具。
- Git可以将我们的项目保存若干快照,用来对整一个项目进行版本管理操作。
使用Git的优点:
- 可以离线进行工作
- 当我们和他人协同工作时变得简单
- 分支是很轻松的
- 合并是非常容易的
- Git系统的速度很快,并且很灵活
好奇什么是版本控制:
版本控制系统就是根据时间来记录一个或者多个文件的更改情况的一个系统。
版本控制又分为集中式版本控制和分布式版本控制。
集中式版本控制:
主要的功能是 同步,跟踪,备份文件。
分布式版本控制:
- 主要的功能是共享更改,每一次的更改都是有唯一的标识。
- 我们可以使用Git很轻松的实现SVN风格的集中式系统控制,因为分布式版本控制是没有预定的结构的。
命令
初始化
创建一个新的Git版本库,这个版本库的配置、存储等信息会被保存到.git 文件夹里面。
$ git init
配置
更改设置。这个设置可以是版本库的设置,也可以是系统的或者全局的设置。
# 输出、设置基本的全局变量
$ git config --global user.email
$ git config --global user.name
$ git config --global user.email"MyEmail@liu.com"
$ git config --global user.name"Name"
帮助
Git内置了对于命令有非常详细的解释,我们可以进行快速查阅。
# 查找可用的命令
$ git help
# 查找所有可用的命令
$ git help -a
# 在文档中查找特定的命令
# git help <命令>
$ git help add
$ git help commit
$ git help init
添加
添加文件到当前工作空间中。使用git add 将文件添加进去,这些文件就添加到之后的提交当中
# 添加一个文件
$ git add HelloWord.java
# 支持正则表达式
$ git add./*.java
分支
# 查看所有的分支+远程分支
$ git branch -a
# 编辑分支的介绍
$ git branch branchName -- edit-description
# 重命名分支
$ git branch -m<旧名称><新名称>
$ git branch -m branchName NewBranchName
# 创建一个新的分支
$ git branch NewBranch
# 删除一个分支
$ git branch -d myBranch
检出
将当前工作空间更新到索引所标识的工作空间或者某一个特定的工作空间
# 检出一个版本库,默认将更新到master 分支
$ git checkout
# 新建一个分支,并且将其切换过去,相当于“Git branch<名称> ;Git checkout<名称>”
$ git checkout -b NewBranch
# 检出一个特定的分支
$ git checkout branchName
clone:此命令就是将一个版本库拷贝到另外一个目录之中,与此同时将分支都拷贝到新的版本库当中,如此一来就可以在新的版本库中提交到远程分支。
commit:将当前索引的更改保存为一个新的提交,此提交包括用户做出的更改和信息。
diff:显示当前工作空间以及提交方式的不同
grep:可以在版本库中快速查找
log:显示这个版本库的所有的提交。
merge:合并,将外部的提交合并到自己的分支中。
mv:重命名或者移动一个文件。
pull:从远端版本库合并到当前分支
push:将远端的版本库更新。
rebase:(谨慎使用),将一个分支上所有的提交历史都引用到另外一个分支上。注意不要在一个已经公开的远端分支上使用rebase 。
reset:(谨慎使用),将当前的头指针复位到一个特定的状态。这样可以让我们撤销merge , pull ,commits , add 等,这是一个很强大的命令,但是注意在使用的时候一定要弄清楚它所带来或者说产生的后果。
rm: 和add相反,从工作空间中去掉某一个文件
Git 架构
版本库:一系列文件、目录、历史记录、提交记录和头指针。可以将它视为每一个源代码文件都带有历史记录属性数据结构。
一个Git版本库包括一个 .git 目录和其 工作目录。
小结:
Git不但是一个分布式版本控制,而且也是一个源代码管理工具。
可以将我们的项目进行一个保存快照,速度快,非常灵活。
多人协同工作不在变得困难,不用在线进行工作,分支和合并不在是麻烦的事情。
|