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 文件状态
已跟踪:当前目录下的文件已受git版本控制。
PS: 已跟踪文件下有三种状态。
         已提交:已跟踪文件已经保存在本地git数据库中。

已修改:已跟踪文件有改动,但还没有提交保存。
         已暂存:已跟踪文件中的已修改文件放在下次提交时要保存的清单中。
未跟踪:当前目录下的文件未受git版本控制。
 

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共享远程仓库。

补充:使用SVN 还是 Git。
           如果项目参与的人员不多的话,规模不大的项目,保密性强,对Git不熟悉的团队,建议使用SVN。
           如果项目参与的人员多,规模大的项目,保密性不强,对Git熟悉的团队,建议使用GIt。(这里不是说GIt的保密性不强,而是项目只能在特定环境下进行开发,并且只能是自己搭建远程
仓库,不是使用第三方代码托管服务所搭建的远程仓库。)
 
总结:强烈推荐使用git,因为git是一个性能卓越的版本控制系统。
    

Git上手:Git扫盲区的更多相关文章

  1. Git上手指南

    (写在最前:这篇随笔是我在学习git时参考资料+实践出来的,其中一些问题是在实践中遇到的,希望对大家有帮助,还有很多不完整的地方.如果有什么错误的地方欢迎随时向我提出来) 在Git教程之前,我们先来了 ...

  2. 快速上手git gitlab协同合作

    简单记录,整理. 摘要 为方便大家快速上手Git,并使用Gitlab协同合作,特编写此手册,手册内容不会太丰富与深入.主要包含如下内容: Git 使用教程1.1 安装1.2 常用命令1.3 版本控制1 ...

  3. 版本管理神器git上手

    由于以前折腾过svn,虽然最终没有用成功,但是也算有经验,git入门还是比较简单的. 在新目录下建立初始化版本库  : git init git add file git add file2 git ...

  4. Git上手:使用Tortoisegit操作Git

    在工作中,为了提高git使用效率,更多会采用git图形化工具来操作git.(特殊情况下才使用git命令行操作git) git自带的图形化工具界面不够友好,就选择第三方git图形化工具,市面上第三方gi ...

  5. 五分钟上手Git

    团队开发中.遵循一个合理.清晰的Git使用流程.是非常重要的.否则,每一个人都提交一堆杂乱无章的commit,项目非常快就会变得难以协调和维护.以下是ThoughtBot 的Git使用规范流程.我从中 ...

  6. git上手简洁手册

    下载安装git 创建文件夹:learngit 用Git CMD进入文件夹: cd learngit 用Git CMD初始化git: git init 创建文件:新建一个文件在learngit文件夹下, ...

  7. 从VSS到SVN再到Git 记Git的基本操作

    Source code control 一直是软件开发过程中重要的环节,从最初的纯文件备份,到使用工具进行管理.Source code control 工具的作用也不仅仅只是单纯的对同一个版本进行管理 ...

  8. [Git] 还原Git上commit,但是没有push代码

    直接在Idea上操作2步解决: 1. 找到: 2. 在To Commit里面填写:HEAD^,表示将commit的信息还原为上一次的,需要多次直接reset多次即可: 使用命令行:原理一样 以下内容转 ...

  9. 命令行操作svn和git和git

    前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...

随机推荐

  1. 【Tim Sweeney】Why C++ for Unreal 4?

    The first three generations of the Unreal Engine included a sandboxed scripting language, UnrealScri ...

  2. IOS 制作版本新特性

    创建版本新特性 页面(存放图片) HMNewfeatureViewController.m #define HMNewfeatureImageCount 4 #import "HMNewfe ...

  3. IOS 数据加密总结(及MD5加密)

    数据安全总结 1.网络数据加密1> 加密对象:隐私数据,比如密码.银行信息2> 加密方案* 提交隐私数据,必须用POST请求* 使用加密算法对隐私数据进行加密,比如MD53> 加密增 ...

  4. 【洛谷4717】【模板】快速沃尔什变换(FWT模板)

    点此看题面 大致题意: 有两个长度为\(2^n\)的数组\(A,B\),且\(C_i=\sum_{j⊕k==i}A_jB_k\)分别求出当\(⊕\)为\(or,and,xor\)时的\(C\)数组. ...

  5. Uva 10375 选择与除法 唯一分解定理

    题目链接:https://vjudge.net/contest/156903#problem/E 题意:已知 求:C(p,q)/C(r,s) 其中p,q,r,s都是10^4,硬算是肯定超数据类型的. ...

  6. [pytorch] Pytorch入门

    Pytorch入门 简单容易上手,感觉比keras好理解多了,和mxnet很像(似乎mxnet有点借鉴pytorch),记一记. 直接从例子开始学,基础知识咱已经看了很多论文了... import t ...

  7. Next K Permutation

    3457: Next K Permutation 时间限制: 1 Sec  内存限制: 128 MB提交: 4  解决: 4[提交] [状态] [讨论版] [命题人:admin] 题目描述 n 个数有 ...

  8. 检测pycaffe安装好没

    进入python然后import caffe,如果没报错就表示安装好了

  9. 使用cmd命令创建maven(web)项目+项目转换成IDEA项目+项目打包+Jetty运行Web项目

    3条件:配置好环境 配置环境教程:https://www.cnblogs.com/weibanggang/p/9623705.html 第一步:查看版本信息,在cmd输入mvn –version,如果 ...

  10. System.IO 二

    接着上篇的来  System.IO FileSystemWatcher    指向这个签名的方法   可以监听目录发生了什么事件 例如: static void Main(string[] args) ...