Git是什么
- Git是是一款免费、开源的分布式版本控制系统。Git追踪的是内容而不是文件。工作区中一个隐藏的目录.git,就是Git的版本库
Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。用于敏捷高效地处理任何或小或大的项目。可以在任何时间,任何地点,将文档的状态作为更新记录保存起来。同时,也可以恢复过来。
注意:
当git无法自动合并分支时,就必须首先解决冲突。解决冲突后,在提交,合并完成。
解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,在提交。
Git优缺点
优点:
1.适合分布式开发,强调个体。
2.公共服务器压力和数据量都不会太大。
3.速度快、灵活。
4.任意两个开发者之间可以很容易的解决冲突。
5.离线工作。
缺点:
代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
集中式版本控制
下图肿所显示的就是一个集中式版本控制系统(例如CVS或Subversion)的典型布局,每## 标题个开发者都在他或她自己的计算机上有一个包含所有项目文件的工作目录(即工作区)。当该开发者在本地做了修改之后,他或她就会定期将修改提交给某台中央服务器。然后,开发者在执行更新操作的同时也会从该服务器上捡取出其他开发者所做的修改。这台中央服务器上存储着这些文件(即版本库)的当前版本和历史版本。因此,这些被并行开发的分支,以及各种被命名(标记)的版本都将会被集中管理。
分布式版本控制系统
分布式版本控制系统中,开发者环境与服务器环境之间是没有分隔的。每一个开发者都同时拥有一个用于当前文件操作的工作区与一个用于存储该项目所有版本、分支以及标签的本地版本库(我们称其为一份克隆)。每个开发者的修改都会被载入成一次次的新版本提交(commit), 首先提交到其本地版本库中。然后,其他开发者就会立即看到新的版本。通过推送(push)和拉回(pull)命令,我们可以将这些修改从一个版本库传送到另一个版本库中。这样一来,从技术上来看,这里所有的版本库在分布式架构上的地位是同等的。因此从理论上来讲,我们不再需要借助服务器,就可以将某一台开发工作机上所做的所有修改直接传送给另一开发工作机。
Git安装
下载地址:
https://git-scm.com/downloads
Git使用前配置
- 配置提交人姓名:
git config --global user.name 提交人姓名
- 配置提交人姓名:
git config --global user.email 提交人邮箱
- 查看git配置信息:
git config --list
. 注意
-
如果要对配置信息进行修改,重复上述命令即可。
-
配置只需要执行一次。
Git命令及用法
git init:初始化仓库
git status:查看文件状态
git add:文件列表追踪文件 git commit -m 提交信息
向仓库中提交代码
git clone 项目地址 :从仓库下载项目
git branch:查看分支
git branch 分支名称 :创建分支
git checkout 分支名称 : 切换分支
git merge 来源分支 :合并分支
git branch -d 分支名称 : 删除分支(分支被合并后才允许删除)(-D 强制删除)
暂时保存更改
在git中,可以暂时提取分支上所有的改动并存储,让开发人员得到一个干净的工作副本,临时转向其他工作。
使用场景:分支临时切换
- 存储临时改动:
git stash
- 恢复改动:
git stash pop
使用Git提交步骤
- git init: 初始化git仓库 (mac中Command+Shift+. 可以显示隐藏文件)
- git status : 查看文件状态
- git add 文件列表 : 追踪文件
- git commit -m 提交信息 :向仓库中提交代码
- git log : 查看提交记录
撤销
-
用暂存区中的文件覆盖工作目录中的文件:
git checkout 文件
-
将文件从暂存区中删除:
git rm --cached 文件
-
将 git 仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录:
git rest --hard commitID
git 分支( branch ) 的基本使用
分支( branches ) 是指在开发主线中分离出来,做进一步开发而不影响到原来主线。
分支命令
-
git branch` 查看分支
-
git branch 分支名称` 创建分支
-
git checkout 分支名称` 切换分支
-
git merge 来源分支` 合并分支
-
git branch -d 分支名称` 删除分支(分支被合并后才允许删除)(-D 强制删除)
暂时保存更改
在git中,可以暂时提取分支上所有的改动并存储,让开发人员得到一个干净的工作副本,临时转向其他工作。
使用场景:分支临时切换
- 存储临时改动:git stash`
- 恢复改动:git stash pop
`