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可谓程序员界的福音, ...
随机推荐
- 详解 CSS 居中布局技巧
水平居中元素: 通用方法,元素的宽高未知 方式一:CSS3 transform .parent { position: relative; } .child { position: absolute; ...
- windows/Linux主机重启NetBackup服务和后台进程
关闭并启动所有NetBackup服务和后台进程 要关闭并启动所有NetBackup服务和后台驻留程序,请从命令行输入以下命令: 在Windows上: 要关闭所有NetBackup服务: install ...
- 重写KVC
#import "NSObject+WQKVC.h" #import <objc/runtime.h> /** KVC 首先调用的方法顺序: |- setter: se ...
- 2018.7.15 解决css中input输入框点击时去掉外边框方法
.input_css{ background:no-repeat 0 0 scroll #EEEEEE; border:none; outline:medium; }
- Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
https://zhuanlan.zhihu.com/p/23006190?refer=xiaoleimlnote http://blog.csdn.net/bea_tree/article/deta ...
- Mac 修改用户环境变量
Mac 修改用户环境变量 sudo vim ~/.bash_profile
- UITabBarController的tabBarItem图标真机不显示
在xib中分别设置了图标选择和未选择的图片 模拟器效果 选中 未选中 当时使用多种机型进行测试时发现部分机型第一次进入应用除第一个tabbaritem图标可以显示,其余均不能显示,点击其余tabbar ...
- 【例题收藏】◇例题·II◇ Berland and the Shortest Paths
◇例题·II◇ Berland and the Shortest Paths 题目来源:Codeforce 1005F +传送门+ ◆ 简单题意 给定一个n个点.m条边的无向图.保证图是连通的,且m≥ ...
- ABAP Table Control
SAP中,Table Control是在Screen中用的最广泛的控件之一了,可以实现对多行数据的编辑. 简单来说,Table Control是一组屏幕元素在Screen上的重复出现,这就是它与普通 ...
- Spring Cloud 升级最新 Finchley 版本,踩坑指南!
https://blog.csdn.net/youanyyou/article/details/81530240 Spring Cloud 升级最新 Finchley 版本,踩了所有的坑! 2018年 ...