git
一. git简介
Git是一款免费、开源的分布式版本控制系统。
二. git与svn区别
svn是集中式版本管理系统,而git是分布式版本管理系统。
集中式就是版本库只集中在一台中心服务器上,其它电脑连接服务器才能干活;
分布式就是版本库分布在每一台电脑上,每一台电脑都有一个独立的版本库;
集中式原理图:
分布式原理图:
Paste_Image.png
)
git的工作流程图:
Paste_Image.png三. git的优点及现状
git优点
git每台电脑都有一个版本库,可以在本地做版本管理;
速度快。git的速度远超大部分版本管理系统,包括svn
强大的分支管理功能
活跃的开源社区,如最著名的github
git 缺点
Git 没有严格的权限管理控制,一般通过系统设置文件读写权限的方式来做权限控制。
工作目录只能是整个项目。比如 checkout,建分支,都是基于整个项目的。而 svn 可以基于项目中的某一个目录
git现状
具体使用 svn 还是 git 要看公司的情况, 一半一半
git在开源项目中使用的比较多,git 的开源社区比 svn 要活跃得多
每一个 it 从业人员多多少少都要和 git 打打交道
git存储区的概念:工作区,暂存区,对象存储区
我们的项目文件夹即是工作区,提交的过程,是先将修改的文件放到暂存区、再从暂存区移动到存储区
Paste_Image.png Paste_Image.png Paste_Image.pnggit本地提交的操作
第一步初始化一个仓库
第二配置用户名和用户邮箱
将文件添加到暂存区
将文件提交到对象存储区
git init //初始化一个本地git代码仓库
git confit user.name //配置用户名
git config user.email //配置用户邮箱
git status //查看 git 工作区和暂存区 文件状态
git add . //将文件从工作区移到暂存区
git diff //比较当前版本和之前版本的区别
git commit -m "注释文字" //将文件从暂存区提交到代码区,完成一次版本提交
.git 文件夹是隐藏的,需要执行 defaults write com.apple.finder AppleShowAllFiles -bool true,重启finder才能显示出来
版本回滚操作
git 的每一次操作,都会被一个 hash 值标记,根据某次操作的 hash 值,可能回滚到某个版本。
git log //查看截止到当前版本的历史记录
git reset --hard HEAD^ //将代码回滚到之前版本
git reflog //查看所有操作过的历史记录
掌握了以上内容,我们已经可以应付公司或个人的单人项目。这是git版本管理最基础的部分,需要反复练习,直到熟练。
四. git多人协作开发
git 多人协作开发介绍
需要有一个服务器
除了在本地提交,还需要往服务器提交
需要添加 .gitignore 文件
有可能产生冲突,需要手动解决
git 多人协作过程
初始化一个 git 服务器
添加 .gitignore
文件
项目经理创建项目
开发人员克隆服务器版本库到本地
happy开发
git init --bare //建立一个git服务器代码仓库
git clone <服务器地址> //建立一个git服务器代码仓库
git status //查看 git 工作区和暂存区 文件状态
git add . //将文件从工作区移到暂存区
git commit -m "注释文字" //将文件从暂存区提交到代码区,完成一次版本提交
git push //把本地版本库提交到服务器,类似 svn 的 commit
git pull //把将服务器的最新版本拉取到本地,并合并代码,类似 svn 的 update
git config --global push.default simple/maching //默认simple,只提交当前分支
冲突解决
养成先执行 git commit 命令后;再执行 git pull;最后执行 git push的好习惯;
修改别人的代码会造成代码冲突,需要手动解决,如无特殊需要,尽量不要干这么 low
的事儿
##git命令总结
//git 本地版本管理命令
git init //初始化一个本地git代码仓库
git confit user.name //配置用户名
git config user.email //配置用户邮箱
git status //查看 git 工作区和暂存区 文件状态
git add . //将文件从工作区移到暂存区
git diff //比较当前版本和之前版本的区别
git commit -m "注释文字" //将文件从暂存区提交到代码区,完成一次版本提交
git log //查看截止到当前版本的历史记录
git reset --hard HEAD^ //将代码回滚到之前版本
git reflog //查看所有操作过的历史记录
//多人协作开发命令
git init --bare //建立一个git服务器代码仓库
git clone <服务器地址> //建立一个git服务器代码仓库
git push //把本地版本库提交到服务器,类似 svn 的 commit
git pull //把将服务器的最新版本拉取到本地,并合并代码,类似 svn 的 update
git config --global push.default simple/maching //默认simple,只提交当前分支
//tag及分支命令
git tag –a 1.0 –m “name” //添加新标签
git tag //查看所有tag
git tag -n // 查看所有 tag,带注释
git checkout 1.0 //切换到某一标签版本
git show 1.0 //查看某个标签及其对应版本的详细信息
git tag -d 1.0 //删除一个版本
git push origin 1.0 //将版本推送到服务器
//分支相关命令
git branch //查看当前分支
git branch -a //查看所有分支
git checkou -b dev //创建一个分支 dev, 并切换到该分支
git push origin dev //在本地创建一个分支
git checkout master //切换到分支 master
git branch -D dev //删除本地 dev 分支
git git push origin :dev //删除远程 dev 分支
git merge dev //将 dev分支合并到当前分支
-------------------------------------------------我是分割线--------------------------------------------
SourceTree
一、 SourceTree简介
SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作。同时它也是Mercurial和Subversion版本控制系统工具。支持创建、提交、clone、push、pull 和merge等操作。
二、 SourceTree&Git部分名词解释
- 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库
- 提交(commit):将暂存文件上传到本地仓库(我们在Finder中对本地仓库做修改后一般都得先提交一次,再推送)
- 检出(checkout):切换不同分支
- 添加(add):添加文件到缓存区
- 移除(remove):移除文件至缓存区
- 暂存(git stash):保存工作现场
- 重置(reset):回到最近添加(add)/提交(commit)状态
- 合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消
- 抓取(fetch):从远程仓库获取信息并同步至本地仓库
- 拉取(pull):从远程仓库获取信息并同步至本地仓库,并且自动执行合并(merge)操作,即 ** pull=fetch+merge **
- 推送(push):将本地仓库同步至远程仓库,一般推送(push)前先拉取(pull)一次,确保一致
- 分支(branch):创建/修改/删除分枝
- 标签(tag):给项目增添标签
- 工作流(Git Flow):团队工作时,每个人创建属于自己的分枝(branch),确定无误后提交到master分枝
- 终端(terminal):可以输入git命令行
网友评论