认识 git
什么是 git?
Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
什么是版本控制?
版本控制是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。简单的说就是管理多人协同开发项目的技术。
实现跨区多人协同开发
追踪和记载文件的历史记录
更好的统计工作量
并行开发、提高开发效率
跟踪记录整个项目软件的开发过程
减轻开发人员的负担,节省时间
git 与 svn 的区别
svn 是集中式版本控制系统,git 是分布式版本控制系统
集中式版本控制:所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
分布式版本控制:客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。这类系统都可以指定和若干不同的远端代码仓库进行交互。介此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。你可以根据需要设定不同的协作流程。
git 是将文件存到本地然后再推送到服务器,svn 是直接与服务器进行交互
git 可以不连网进行工作,svn 必须在连网的情况下工作
git 内容按元数据方式存储,svn 是按文件
git 只关心文件数据的整体是否发生变化,而 svn 则只关心文件内容的具体差异。git 为每个项目在根路径下建立一个.git 目录,它是 git 用来保存元数据和对象数据库的地方,该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。
git 没有全局的版本号,svn 有全局版本号
git 可以任意在自己的本地版本库开启无限个分支,svn 分支是一个完整的目录,且这个目录拥有完整的实际文件
工作区
在电脑上能看到的目录。
暂存区
存放工作区未提交的改动。
工作区有一个隐藏目录.git,这个不是工作区,而是 git 的版本库;git 的版本库里存了很多东西,其中最重要的就是称为 stage 的暂存区,还有 git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针叫 HEAD。git 把需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
git 配置及连接远程仓库
在 git 客户端配置本地 email 和 user,
创建本地 ssh
在 github 中添加 ssh 密钥
将 ssh 配置到 GitHub,使用命令验证是否配置成功:ssh -T git@github.com
常用的 git 操作指令
git clone
拷贝 git 仓库到本地
git log
查看所有提交过的项目版本信息
git reflog: 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
git status
查看文件状态
git add
把改动文件提交到暂存区
git add . 把所有修改变化提交到暂存区,不包括被删除的文件
git add -A 提交所有变化
git commit
把暂存区文件提交到本地的版本库
git commit -m 'msg' 提交添加备注,smg 为备注信息
如果备注信息太多,可以通过以下形式备注:git commit -m '
msg1
msg2
msg3
'
git push
把本地版本库分支提交到远程分支
git push origin master 将本地分支推送到与之存在追踪关系的远程分支,如果该远程分支不存在,则会被新建
git pull origin test1:master origin 主机的 test1 分支,与本地的 master 分支合并
git pull
获取远程分支更新内容
git pull origin test1 远程分支 test1 与当前分支合并
git branch
查看分支
git branch 查看本地分支
git branch -r 查看远程分支
git branch -a 查看所有分支
git branch test1 创建分支名为 test1 的本地分支
git branch -d test1 删除本地分支 test1
git checkout
切换分支
git checkout -b 创建并切换分支
git fetch
获取远程分支到本地
git fetch --all 获取所有的远程分支
git merge
合并分支
使用 git 的开发步骤(个人心得)
使用一般工作流程:
- git pull 更新本地的文件;如果远程修改了,需要同步远程的内容
- 本地在修改之后,可以通过 git status 查看修改的文件
- 使用 git add 添加修改的文件暂到缓冲区
- git commit 把暂存区内容添加到当前的工作区
- git push 将本地的修改提交到远程 git 服务器