Git原理及操作简介
Git原理及操作简介
一、Git是什么
Git是目前世界上最先进的分布式版本控制系统
工作原理 / 流程:
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
二、SVN与Git的最主要的区别?
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
三、Git操作
Git配置(Git Bash)
因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识
git config --global user.name "yourname"
git config --global user.email "your email"
注意:git config --global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱
1.创建版本库
版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
使用git init
命令即可将当前文件夹变为git管理仓库:
这时候你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了。
添加与提交
- 添加命令
git add 文件夹or文件
- 提交命令
git commit -m "注释"
- 添加命令
查看状态
- 状态查询命令
git status
可查看是否还有文件未提交
- 状态查询命令
查看版本差异
- 比较命令
git diff 文件夹or文件名
可查看提交版本与之前版本不同之处
- 比较命令
Git bash 中文乱码处理
- 更改Git的配置
git config --global core.quotepath false
2.版本回退
查看提交历史记录
git log
显示从最近到最远的显示日志,按q退出git log --pretty=oneline
可以将信息整合为单行回退操作
git reset –hard HEAD^
回退到上一版本,回退到上上个版本则将HEAD^
改为HEAD^^
,以此类推(数量过大时使用git reset --hard HEAD~100
即可,数字100代表前100个版本)
回退后回到最新版本
git reflog
可查看历史版本号,git reset –hard 版本号
即可恢复相应版本
3.撤销修改
- 手动删除重新添加或回退到上一版本
git checkout -- <file>
可丢弃工作区的修改(注意:若无--
则变为创建分支)
4.删除文件
rm <file>
可删除文件,再次commit
可彻底删除在没有
commit
之前,能使用git checkout -- <file>
恢复
四、创建远程仓库
1.创建与添加秘钥
ssh-keygen -t rsa -C “youremail@example.com”
创建SSH key
ssh-add id_rsa
本地添加密钥验证
github<settings<SSH and GPG keys<SSH keys<New SSH key远程添加公钥
2.创建新仓库
echo "# flask" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:ruishuai123/flask.git
git push -u origin master
3.Push已存在的仓库
git remote add origin git@github.com:ruishuai123/flask.git
git push -u origin master
4.clone远程仓库到本地
复制github远程仓库地址,使用git clone url#远程地址
克隆到本地
五、创建与合并分支
1.创建与合并基本操作
- 查看分支:
git branch
- 创建分支:
git branch name
- 切换分支:
git checkout name
- 创建+切换分支:
git checkout –b name
- 合并某分支到当前分支:
git merge name
- 删除分支:
git branch –d name
2.解决冲突
分支同文件内容与主分支不同时会产生冲突,冲突报错后使用
git status
查看状态使用
cat
可查看该文件不同之处,<<<<<<<,=======,>>>>>>>
标记出不同分支的内容,其中<<<HEAD
是指主分支修改的内容,>>>>>name
是指分支上修改的内容git log
可查看分支合并情况
3.分支管理
- 合并分支时默认使用Fast forward模式,删除分支后,会丢掉分支信息
- 建议合并分支时,使用命令
git merge –no-ff -m
禁用Fast forward模式,可保留信息
分支策略:首先master主分支应该是非常稳定的,也就是用来发布新版本,一般情况下不允许在上面干活,干活一般情况下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。
4.bug分支
在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。
当在某分支工作未完成时,需临时修改bug,可使用
git stash
将当前工作现场储藏。在完成bug修复后,切换回原分支,使用
git stash list
查看储藏内容git stash apply
恢复储藏内容,修复后stash内容并不删除,可使用命令git stash drop
删除
六、多人协作
当从远程库克隆时,Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。
- 要查看远程库的信息 使用
git remote
- 要查看远程库的详细信息 使用
git remote –v
1.推送分支
推送分支就是把该分支上所有本地提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:使用命令
git push origin master
master分支是主分支,因此要时刻与远程同步
一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程
2.抓取分支
- 开始协作前首先要把dev分支推送到远程
- 合作者可以在另一台电脑上(注意要把SSH key添加到github上)或者同一台电脑上另外一个目录克隆,要在dev分支上做开发,就必须把远程的origin的dev分支到本地来,可以使用命令创建本地dev分支:
git checkout –b dev origin/dev
- 开发完成后把dev分支推送到远程库,若其他合作者也在同一分支修改同一文件并推送,则会产生冲突,先用
git pull
(需指定本地dev分支与远程origin/dev分支的链接git branch --set-upstream dev origin/dev
)把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送
3.多人协作工作模式
首先尝试
git push origin branch-name
推送修改若推送失败,则因为远程分支比你的本地更新早,需要先用
git pull
试图合并若合并有冲突,则需要解决冲突,并在本地提交,再用
git push origin branch-name
推送
七.gitignore忽略规则简单说明
- 被过滤掉的文件不会出现在git仓库中,但任存在于本地库中,只是push的时候不会上传。
*.a #表示忽略所有 .a 结尾的文件
!lib.a #表示但lib.a除外
/TODO #表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
build/ #表示忽略 build/目录下的所有文件,过滤整个build文件夹;
- gitignore还可以指定要将哪些文件添加到版本管理中,只需在文件前加上!即可:
!*.zip #添加所有zip文件
!/mtk/one.txt #添加mtk目录下的one.txt
- 若.ignore文件中只有过滤规则,而没有添加规则,就要把目录下除了需忽略的文件外所有的文件都列写出来。
Git原理及操作简介相关推荐
- Git理论、原理、操作
Git理论.原理.操作 Git简介: 一个开源的分布式版本控制系统.用于处理任何大大小小的项目,是一个开放源码的版本控制软件. Git与SVG的区别: 1.git是分布式的 2.git把内容按元数据方 ...
- git原理和常用操作
全栈工程师开发手册 (作者:栾鹏) 架构系列文章 由于gitlab的免费私有仓库的优势,所以在公司使用gitlab会多一些,对于gitlab来说,注册需要翻墙,而登录不需要. 关于git是做什么的,这 ...
- Git 原理详解及实用指南
Git 原理详解及实用指南 什么是版本控制系统(VCS) 很多人认为 Git 难以理解的第一个门槛在于:所谓的「Git 是一个分布式版本控制系统」这句话的具体含义不够清楚.其实分布式版本控制系统(Di ...
- git 原理详解及实用指南_如何编写良好的提交消息:实用的Git指南
git 原理详解及实用指南 To create a useful revision history, teams should first agree on a commit message conv ...
- git原理及常见使用方法
Git 原理入门-来自阮一峰 Git 是最流行的版本管理工具,也是程序员的必备技能之一. 即使天天使用它,很多人也未必了解它的原理.Git 为什么可以管理版本?git add.git commit这些 ...
- 图解git原理与日常实用指南
缘起 读了"扔物线"老师的小册<Git 原理详解及实用指南>感觉收获良多,于是想写点东西做一个总结,即加深自己的印象也希望能给社区小伙伴一点帮助,写的不对的地方还请多多 ...
- Git版本控制常见操作
大家好,哈哈,萍子有日子没更新博文了呢,最近真的是懒得不要不要的,然后最近萍子手里在跟进一个小程序的项目,所以就没再更新那马马虎虎的博文了,小伙伴们见谅哦~ 萍子一直以来对于git的使用心里都很发怵, ...
- Android 系统(175)---Android硬件加速原理与实现简介
Android硬件加速原理与实现简介 在手机客户端尤其是Android应用的开发过程中,我们经常会接触到"硬件加速"这个词.由于操作系统对底层软硬件封装非常完善,上层软件开发者往往 ...
- -m commit git_Git 天天用,但是 Git 原理你了解吗?不进来了解一下?
前言 做技术一定要知其然知其所以然,意思就是:知道它是这样的,更知道它为什么是这样的.我主要通过4块内容来简单介绍 Git 原理是什么样的.这4块内容如下: Git 存储目录结构介绍 Git 是如何存 ...
最新文章
- c语言编写木马软件,【C语言】后台木马程序
- c#:winform鼠标拖动窗口大小时,设定窗口最小尺寸
- 质量体系审核中的10大常见场景,你遇到了几个?
- python数据展示库_收藏!盘点很实用的数据科学Python库
- 客户端渲染(CSR)
- 商业认知,新的一年已经开始,许多老板都制订了新的目标
- Android App层通过JNI从驱动获取Input Event
- 2011-2017年中国各地政府BIM相关标准政策汇总
- 用js把数字转化成为大写金额
- android 图片背景模糊,实现图片模糊(背景虚化),实现图片模糊背景
- 罗马帝国开创了辉煌的人类文明,但他们的数字表示法的确有些繁琐,尤其在表示大数的时候,现在看起来简直不能忍受,所以在现代很少使用了。之所以这样,不是因为发明表示法的人的智力的问题,而是因为一个宗教的原因
- 蓝牙(四)LMP协议解析之二
- DIV滚动条自动滚动到最底部的两种方法
- 精密型工业级UHF超高频RFID读写器|读卡器JT7300的MODBUS协议说明
- python回车换行怎么不行_python回车不能换行怎么办
- JavaScript内存溢出
- 美国的米拉超级计算机,超级计算机“米拉”:效力阿贡国家实验室_Intel Xeon E5-4650_服务器评测与技术-中关村在线...
- 广西免考职称英语计算机,广西职称英语免考条件及免试人群
- EOS智能合约编译部署
- MATLAB实验(信号与系统的频域分析)