1. GIT简介
GIT有两个重要的时间点:第一个时间点2005年GIT诞生,之后迅速成为最流行的分布式版本控制系统。第二个时间点2008年GitHub网站上线,它为开源项目免费提供Git存储。
2. GIT优势
1) 方便快速,分布式管理。
2)直接记录快照,而非差异比较。
2)对非线性开发模式的强力支持。
csv,svn等版本管理系统以文件变更列表的方式存储信息, 这类系统将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。Git 则是把数据看作是对小型文件系统的一组快照。 每次提交更新或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效如果文件没有修改,Git 不再重新存储该文件而是只保留一个链接指向之前存储的文件。
Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照
3. GIT的三种状态
Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。 已提交表示数据已经安全的保存在本地数据库中。 已修改表示修改了文件,但还没保存到数据库中。 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。由此引入 Git 项目的三个工作区域的概念:Git 仓库、工作目录以及暂存区域
工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。
Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。
4. GIT安装
linux上安装git命令如下:
$ sudo yum install git
5. GIT初始配置
安装完Git后首先需要设置你的用户名称与邮件地址
git config --global user.name "will"
git config --global user.email will.wang@xxx.com
如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息
检查配置信息
#所有配置信息
git config --list
#指定项配置信息
git config user.name
#获得某项帮助文档
git help clone
6. GIT常用命令
初始化仓库
git init
克隆现有的仓库
git clone ssh://git@ip:port/yrz-teams/xxx.git
检查当前文件状态,出现任何处于未跟踪状态的新文件Git会在这里列出来
git status
提交文件到暂存区
git add README.md
比较工作目录中当前文件和暂存区域快照之间的差异(git diff只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动)
git diff
查看已暂存的将要添加到下次提交里的内容
git diff --staged
提交代码
git commit -m “massage”
推送到远端
git push
当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用
git rm README.md
git commit -m 'delete somefile'
git push
当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用
git rm --cached README.md
git commit -m 'delete somefile'
git push
移动文件
git mv README.md README
查看提交历史
#-p:用来显示每次提交的内容差异,-2:仅显示最近两次提交
git log -p -2
#格式化的方式显示提交历史
git log --pretty=format:"%h - %an, %ar : %s"
%h 提交对象(commit)的完整哈希字串,%an 作者(author)的名字,%ar作者修订日期,按多久以前的方式显示,%s 提交说明
撤销提交操作
当提交完成后发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交
git commit --amend
利用git commit —amend —no-edit
命令修改上一次变更内容
#第一次commit内容
echo 'Hello world' >> README.md
git add .
git commit -m "modify README.md"
git log --oneline
#修改文件内容并合并到上一次的commit变更当中
echo 'Hello will' >> README.md
git add .
git commit --amend --no-edit
git log --oneline
执行结果如下:
f30703a (HEAD -> master) modify README.md
dd82da4 (HEAD -> master) modify README.md
hash值由f30703a 变成了dd82da4 ,但是message内容并没有发生变化,并且最重要的是只有一条commit记录
查看远程仓库
git remote -v
若没有克隆现有仓库,需要将的仓库连接到某个远程服务器,可以使用如下命令添加,server对应远端仓库路径
git remote add origin <server>
将 HEAD 中的最新内容替换掉你的工作目录中的文件
git checkout -- <filename>
若需丢弃所有的本地改动与提交,可以到服务器上获取最新的版本并将你本地主分支指向到它
git fetch origin
git reset --hard origin/master
合并其他分支到当前分支
git merge <branch>
创建分支
git checkout -b <branch>
查看分支
#查看本地分支
git branch
#查看远程分支
git branch -r
切换回主分支
git checkout master
git checkout feature/feature-gitflow-20181226
删除分支
git branch -d <branch>
7. GIT工作空间