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可谓程序员界的福音, ...
随机推荐
- CRM, C4C和Hybris的后台作业
CRM 使用事务码SM36查看CRM系统的后台作业: 举一些例子: ABAP_TEXT_INDEX这个job执行的report是ABAP_DOCU_CREATE_TEXT_INDEX: 负责填充buf ...
- MHA故障切换方案
mha故障切换当master 挂掉后会自动切换到slave01上去,可以看 tailf /var/mha_log/manager.log4个问题:1,切换后且原master01mysql服务启动OK, ...
- 贪心,POJ(2709)
题目链接:http://poj.org/problem?id=2709 解题报告: #include <stdio.h> #include <algorithm> #inclu ...
- 宝塔linux面板,修改root密码
root,密码忘记了.但宝塔vps的密码没忘记... 翻完宝塔linux面板都没看到有修改系统root密码的选项,后来尝试定时任务shell,也没成功, 最终快绝望的时候,发现通过添加插件成功修改密码 ...
- python-列表常用功能介绍
一.列表(list) 1.定义列表 names = [] #定义空列表 names = ['a','b','c'] #定义非空列表 2.访问列表中元素 >>> names = ['a ...
- How good are detection proposals, really?
How good are detection proposals, really? J. Hosang, R. Benenson, B. Schiele Oral at BMVC 2014 http: ...
- RabbitMQ(一 初识)
背景 在web开发过程中有遇到这样的情况:有一部分业务处理速度很慢,但它的结果对最终的返回没有影响,即使报错了,也不需要返回错误信息,只需要在另一个地方可以查询这部分业务的信息即可.例如:用户下单并成 ...
- 【Java】基础:常见修饰符(权限修饰符以及abstract、static、final等)与变量的描述
1. 修饰符 public.protected.private.default abstract.static.final. abstract:抽象类.抽象方法 static:静态变量.静态方法.静态 ...
- JS底层挖掘
//Promise版本的Ajaxconst getJSON = function(url) { const promise =new Promise(function(resolve, reject) ...
- Oracle多表连接方法
笛卡尔连接[结果集为各表记录的乘积] SELECTt * FROM table_1, table_2, table_n SELECTt * FROM table_1 CROSS JOIN table_ ...