Git上手:Git扫盲区
Git 自述
Git 是由伟大的电脑程序员Linus Torvalds编写的一个开源的,分布式的版本控制系统软件。
Git 核心原理
Git 利用底层数据结构,通过指向索引对象的可变指针,保存文件快照。
PS:简单理解就是git是对象数据库,把git仓库里面文件(源码,图片,声音等文件)转化成一个对象数据,并记录在git仓库里面所有的文件增删改操作。
Git 工作原理
1.git仓库下,被跟踪的文件所有操作(增删改)之后,就会对这些文件快照,然后保存到暂存区,当提交更新的时候,就会生成一条操作记录,保存到git的目录中去。
PS: 这里的git目录指项目中.git的目录,这个目录在windows上是隐藏的,如果想查看该目录,请设置文件夹选项,显示隐藏的文件、文件夹和驱动器。
Git 特点
开源:使用c语言编写的,开放源代码,任何人都阅读源码,自由修改。
灵活:运行性能比Subversion快。(无论是创建分支还是合并分支都是非常方便快捷)
易于修复数据,不易损坏数据。
不占空间资源。
分布式:每个客户端都有一个独立于远程服务器的本地仓库, 即使是在网络离线状态下,依然可以继续进行版本管理。
每个客户端都是可以从远程仓库克隆完整的仓库与提交历史记录到本地仓库。
每个客户端都拥有属于自己的访问权限,不受其他人影响。
每个客户端之间都可以互相推送补丁。
安全:拥有严格的代码提交权限体系。
使用SHA-1算法验证数据的完整性。
Git 基本概念
工作区:指当前目录受git控制的目录。
暂存区:指当前目录受git控制的目录内文件改动。
本地仓库:指本地电脑上建立的git仓库,通过commit提交文件到本地仓库。
远程仓库:指非本电脑上建立的git仓库,(远程主机建立的git仓库),通过push提交文件远程仓库。
Git 分支
master分支,指主分支,一般默认存放稳定版,发布版本的项目。
PS:建议设置为受保护的状态(不能轻易修改),各个分支推送请求不要自动合并master分支。
子分支,可以有多个分支。
常见分支:feature/topic分支:新功能分支。
release分支:正式发布分支,可理解为可执行分支。(类比master分支)
bug/fix/pu:有漏洞,待修复,待改进的分支。
dev:正在开发的分支,各个开发人员各自开发的分支。
next:合并稳定新功能的分支。
maint:除错维护的分支。
Git 分支获取
fetch:本地仓库更新到远程仓库的版本,不会合并分支。
此方法需要通过git merge合并分支。
pull:工作区更新到远程仓库的版本,自动合并分支并提交。
此方法容易引起文件内容冲突。
Git 分支合并
rebase:无需创建提交,把其他某一条分支的更改应用到另一个分支上,(记住,另一个分支不一定是master分支)
此方法虽然保证线性提交记录,但偶尔会引起文件内容冲突,会删除日志中提交。
merge:创建提交,把当前某一条分支的所有更改都合并到另一个分支,包括提交历史。(记住,另一个分支不一定是master分支)
此方法虽然不会保持线性提交记录,同时会增加所有人的提交记录,难以追溯属于自己的提交记录。
PS:慎用rebase,避免把rebase共享远程仓库。
Git上手:Git扫盲区的更多相关文章
- Git上手指南
(写在最前:这篇随笔是我在学习git时参考资料+实践出来的,其中一些问题是在实践中遇到的,希望对大家有帮助,还有很多不完整的地方.如果有什么错误的地方欢迎随时向我提出来) 在Git教程之前,我们先来了 ...
- 快速上手git gitlab协同合作
简单记录,整理. 摘要 为方便大家快速上手Git,并使用Gitlab协同合作,特编写此手册,手册内容不会太丰富与深入.主要包含如下内容: Git 使用教程1.1 安装1.2 常用命令1.3 版本控制1 ...
- 版本管理神器git上手
由于以前折腾过svn,虽然最终没有用成功,但是也算有经验,git入门还是比较简单的. 在新目录下建立初始化版本库 : git init git add file git add file2 git ...
- Git上手:使用Tortoisegit操作Git
在工作中,为了提高git使用效率,更多会采用git图形化工具来操作git.(特殊情况下才使用git命令行操作git) git自带的图形化工具界面不够友好,就选择第三方git图形化工具,市面上第三方gi ...
- 五分钟上手Git
团队开发中.遵循一个合理.清晰的Git使用流程.是非常重要的.否则,每一个人都提交一堆杂乱无章的commit,项目非常快就会变得难以协调和维护.以下是ThoughtBot 的Git使用规范流程.我从中 ...
- git上手简洁手册
下载安装git 创建文件夹:learngit 用Git CMD进入文件夹: cd learngit 用Git CMD初始化git: git init 创建文件:新建一个文件在learngit文件夹下, ...
- 从VSS到SVN再到Git 记Git的基本操作
Source code control 一直是软件开发过程中重要的环节,从最初的纯文件备份,到使用工具进行管理.Source code control 工具的作用也不仅仅只是单纯的对同一个版本进行管理 ...
- [Git] 还原Git上commit,但是没有push代码
直接在Idea上操作2步解决: 1. 找到: 2. 在To Commit里面填写:HEAD^,表示将commit的信息还原为上一次的,需要多次直接reset多次即可: 使用命令行:原理一样 以下内容转 ...
- 命令行操作svn和git和git
前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...
随机推荐
- spring-mabatis整合的配置文件
1.spring.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...
- IOS 发布程序(打包上传)
• 发布程序的主要步骤 登录开发者主页 生成cer证书:cer是一个跟电脑相关联的证书文件,让电脑具备发布程序的功能 添加App ID:发布哪些app? 生成MobileProvision文件:生成一 ...
- IOS 解析Json数据(NSJSONSerialization)
● 什么是JSON ● JSON是一种轻量级的数据格式,一般用于数据交互 ● 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除 外) ● JSON的格式很像OC中的字典和数组 ...
- LCA最近公共祖先(POJ1330)
题目链接:http://poj.org/problem?id=1330 解题报告: 先将一个子节点,深搜每一个根节点,并标记. 然后深索另一个子节点,当发现访问过了,就找到了最近的公共祖先. #inc ...
- querystring处理参数小利器
相信上一章的讲解,相信大家对url地址有一个更直观的认识,在url解析的时候可以用querystring这样一个module替换,然后对这个query集成一个对象,这里不管是前端开发还是后端开发,都常 ...
- PHPmailer群发Gmail的常见问题
博主小白一枚,phpmailer只会一些基本的用法,就这样一个邮件的群发功能也难住了我一周,下面把我遇到的问题给大家总结一下 1.Could not authenticate 首先,如果你没有使用循环 ...
- P1909 买铅笔
题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 33种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同.为了公平起 见,P老师决定只买同一种包装的铅笔 ...
- redis 有序集合类型
- iOS内存管理部分内容
Objective-C 高级编程 iOS与OS X多线程和内存管理第一章部分讲述了关于ARC的内容,还讲述了关于修饰符的问题,还讲了好多底层的实现的内容,这些底层实现却往往是在面试的过程中经常被遇到的 ...
- 转:2018最全Redis面试题整理
Java面试----2018最全Redis面试题整理 1.什么是Redis? 答:Redis全称为:Remote Dictionary Server(远程数据服务),是一个基于内存的高性能key-va ...