Git简介
- 开源的分布式版本控制系统,高效、简单、完全分布式。
- 本地执行操作,离线的优势--快。
- 每次你提交更新,或在 Git中保存项目状态时,它主要对当时的全部文件制作一个快 照并保存这个快照的索引。
- 为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只 保留一个链接指向之前存储的文件。
- git文件的三种状态:已修改(modified)、已暂存(staged)、已提交(commited),对应三个工作区域:工作目录、暂存区域、Git仓库。
- 基本的 Git 工作流程如下:
- 在工作目录中修改文件
- 暂存文件,将文件的快照放入暂存区域
- 提交更新,找到暂存区域的文件,将快照永久性存储到Git仓库目录
Git安装和配置
-
下载安装对应系统的Git
-
配置Git每次提交对应的用户信息
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
创建Git仓库
- 方法1:创建空文件夹,在其中执行
git init
命令,之后将项目创建在此文件夹中,新的文件即可被git跟踪。 - 方法2:克隆已有的仓库,复制项目地址,执行以下命令
$ git clone https://github.com/libgit2/libgit2 rename
,rename为别名,不写默认文件夹名为项目名。
记录每次更新
- 文件的状态变化如下:
- 创建.gitignore文件来忽略日志等不必要的文件
cat .gitignore
*.log
- 检查当前文件状态,是否都已经提交到暂存区,加
-s
参数可以输出简要信息
git status
- 跟踪已修改文件并提交到暂存区,参数可以为一个路径,表示其下的所有文件
git add name
- 查看尚未暂存的改动行,如果想查看暂存区域将要提交的内容,加
--staged
参数
git diff
- 提交更新,
-m
参数填写备注,-a
参数将所有跟踪的文件暂存起来一起提交
git commit -m "提交备注信息"
- 撤销之前的提交,使用新的提交,这样尽显示一次提交
git commit --amend
查看提交历史
- 显示每次提交的内容差异
git log -p
- 使用
-n
参数显示最近的n次提交 - 查看每次提交的简略信息
git log --stat
- 指定不同方式展示提交历史,展示一行
oneline
或者short
或full
或fuller
git log --pretty=oneline
- 定制显示格式
$ git log --pretty=format:"%h - %an, %ar : %s"
远程仓库的使用
- 添加远程仓库
- 克隆远程仓库,执行默认操作
$ git clone https://github.com/schacon/ticgit
- 明确的添加远程仓库,name为你自己给服务器起的名字
git remote add name https://github.com/paulboone/ticgit
- 重命名远程仓库
git remote rename origin newname
- 移除一个远程仓库
git remote rm origin
- 克隆远程仓库,执行默认操作
- 查看当前已配置的远程仓库服务器
$git remote
,默认命名为origin-v
选项可以查看服务器URL- 查看一个远程仓库的更多信息
git remote show [remote-name]
- 从远程仓库抓取与拉取
- 抓取但不合并分支
git fetch [remote-name]
如果是克隆的仓库,执行git fetch origin
可以抓取最新推送的工作 - 拉取并自动合并到当前分支
git pull
- 抓取但不合并分支
- 推送到远程仓库
- 将master分支推送到origin服务器,一般需要先执行拉取操作后推送
git push origin master
默认推送到远程仓库自动创建的master分支,可以指定其创建新的分支,使用git push origin master:newbr
- 将master分支推送到origin服务器,一般需要先执行拉取操作后推送
标签的使用
- 列出标签
git tag
- 使用
-a
参数创建标签,-m
参数添加附注信息
git tag -a v1.0 -m "my v1.0"
- 查看标签内容
git show v1.0
- 共享标签
git push origin --tags
默认不会将标签推送到远程服务器上,需要手动添加标签名推送,--tags
为推送所有远程仓库服务器没有的标签。