g4e基础篇#4 了解Git存储库(Repo)

Git 存储库看上去就是一个文件夹,只是在这个文件夹中不仅仅保存了所有文件的当前版本,也同时保存了所有的历史记录,这些额外的信息都保存在当前文件夹下面的.git子目录中。因为前面我们所描述的git跟踪改动的特殊方式 ,git可以在很小的开销下保留非常复杂的历史记录,同时也由于这种跟踪方式,使得git可以通过改变链接指向的方式随时切换当前目录中任何文件的版本,从而实现了在同一套文件系统上切换分支的功能。

虽然git是分布式版本控制系统(DVCS),但是在企业开发中,我们仍然需要一个中心git存储库以便不同的团队成员可以更为方便的交换代码。与集中式(CVCS)的中心存储库不同,Git的中心存储库与任何开发人员的本地存储库都保留了一致的代码变更,因此开发人员不必连接到中心存储库就可以完成获取历史记录,拉取分支,合并分支等操作;这给予了每一名开发人员离线工作的能力,同时允许每个人在本地创建自己的分支结构进行尝试,在开发人员认为本地的分支需要共享给其他人的时候,他们可以将本地分支推送至中心存储库,这样其他开发人员也可以获取这些共享的更改。所以,在企业中使用Git并配合中心存储库可以兼顾团队开发中共享和独立开发的诉求,让开发人员具备很高的自由度的同时又不会丧失代码集中存储所带来的优势。

当然,开发人员也可以不通过中心存储库共享代码,但是这种做法在企业中是不推荐的,虽然在GitHub上这基本上是普遍的工作方式,但是这种工作方式并不适合与企业开发。与开源软件不同的是,大多数企业开发都是多人协作完成同一个项目,而开源代码的开发则更需要每个人具备独立的版本根据自己的需要进行定制。

Git存储库的基本结构

注:在任何的操作系统中,使用.开头的目录都会被默认隐藏掉,所以要看这些文件需要打开隐藏文件显示和扩展名显示才能看到上面的视图。

.git目录

git的数据目录,里面保存了git自己管理的数据文件,用于实现git的各种功能;删除这个文件等同于删除所有git历史记录,而你的目录就变成了一个普通的文件目录。

.gitattributes文件

用来对当前目录中的git的一些行为进行配置的文件,它能够做到很多事情,比如:指定哪些文件是二进制的以便git不会对它们进行文本比较,指定使用metadata的方式对图片文件进行比较,指定分支间特定文件的合并策略(比如保持master为固定版本,忽略任何合并进来的版本),或者在暂存文件的时候调用某些脚本执行一些动作,等等。

详细说明:https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes

.gitignore 文件

这是一个非常重要的配置文件,用来指定哪些文件应该被忽略掉。因为我们在开发中经常会创建很多临时文件,比如:编译过程的中间文件和最终产生的二进制,这些都不应该被提交到git仓库中。因此我们需要根据不同的技术栈来配置这个文件以便可以正确的忽略那些不应该提交的文件类型。

好在github上已经收集了基本所有你会用到的gitignore文件,只要根据你所使用的技术栈选择并放入存储库即可:https://github.com/github/gitignore

Git的三级配置系统

以上我们在某个git仓库中看到的.gitignore和.gitattributes都属于Git的三级配置系统的一部分,用于对当前仓库进行配置,另外两个级别分别是 global 和 system。 他们的结构如下

  • system

    • repo 1

    • repo 2

    • global

系统级

system 为系统级配置文件,在Windows上存放于Git的安装目录下(默认位置为C:\Program Files\Git\mingw64\etc\gitconfig)。如果要直接对这个配置进行编辑可以使用以下命令

git config --edit --system

注:编辑系统级配置的命令行窗口需要提升权限运行,否则无法保存。

用户级别

global 为当前用户的全局配置文件,在Windows上存放于当前用户的根目录(默认为 C:\Users\{你的用户名\.gitconfig)。如果要直接对这个配置进行编辑可以使用以下命令

git config --edit --global

注:你会注意到我们在Git安装配置那一章中所做的配置实际上就是在修改这个文件。

存储库级别

Repo 级别就是当前存储库的配置文件,存放在当前存储库的根目录,编辑时需要先进入当前存储库的目录,再执行以下命令

git config --edit

以上我们提到的.gitattribute .gitconfig .gitignore都可以通过这三个级别分别配置,越接近git repo的配置生效级别越高。

有关gitconfig的更多配置内容请参考:FAQ #2

获取Git配置的库的两种方式

新建存储库

只需要新建一个目录,然后在里面执行 git init 命令即可完成 git 库的创建。具体命令操作如下

>> mkdir my-new-repo
>>> git init

克隆存储库

首先从远程存储库获取clone地址,然后使用git clone命令即可完成克隆操作。如果远程存储库是开放的,那么克隆会立即开始;如果远程存储库是私有的,则要看你之前是否已经将账号信息通过Git Credential Manager存储,如果没有则会弹出登陆对话框。类似以下流程:

1. 获取Git存储库地址

如果你已经按照之前的安装配置要求创建了VSTS账号,你则可以通过 代码 | 克隆 找到存储库的url地址

复制这个地址,我们就可以进行后续的 clone 操作了。

2. 运行 git clone 命令,输入账号并完成克隆操作

>>> git clone {远程存储库url}

第一次操作一个陌生的远程存储库会需要你输入用户名和密码

输入正确的用户名和密码后,克隆会开始,完成以后你就可以开始操作本地git存储库了。

小结

至此,我们已经可以获取一个Git存储库了,后面的篇章我们将开始对它进行最基本的代码修改,分支,合并,推送和历史记录查看等基本操作。

相关文章:

原文地址:http://devopshub.cn/2018/01/13/g4e-basic-04-git-repo/ 


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P3846-[TJOI2007]可爱的质数【BSGS,数论】

正题 题目链接:https://www.luogu.org/problemnew/show/P3846 题目大意 BL≡N(modP)B^L\equiv N(mod\ P)BL≡N(mod P) 求最小的LLL。 解题思路 首先为了顺眼改一下变量名 Ax≡B(modP)A^x\equiv B(mod\ P)Ax≡B(mod P) 然后我们设xi∗t−j(0≤i≤t,0≤j≤t−1)xi*t-j(0\leq i\…

Oracle常用查询语句

Oracle常用查询语句 查看当前用户的缺省表空间SQL>select username,default_tablespace from user_users;查看当前用户的角色SQL>select * from user_role_privs;查看当前用户的系统权限和表级权限SQL>select * from user_sys_privs;SQL>select * from user_tab_p…

net的retrofit--WebApiClient库

# 库简介WebApiClient是开源在github上的一个httpClient客户端库,内部基于HttpClient开发,是一个只需要定义c#接口(interface),并打上相关特性,即可异步调用http-api的框架 ,支持.net framework4.5、netcoreapp2.0和ne…

P5021-赛道修建【平衡树,贪心,二分答案】

正题 题目链接:https://www.luogu.org/problemnew/show/P5021 题目大意 一棵树找mmm条不重边路径使得最短的那条最长。 解题思路 首先最小的最大显然二分一下答案。之后问题转换为找最多条长度不小于midmidmid的路径。 如果dpdpdp的话需要二维,显然不能胜任本题…

Sentinel(一)之简介

转载自 Sentinel: 分布式系统的流量防卫兵 Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负…

使用xUnit为.net core程序进行单元测试(中)

第一部分: 使用xUnit为.net core程序进行单元测试(上), 下面有一点点内容是重叠的....String Assert测试string是否相等:[Fact]public void CalculateFullName(){var p new Patient{FirstName "Nick",LastName "Carter"};Assert.Equal(&quo…

P2048-[NOI2010]超级钢琴【RMQ,堆】

正题 题目链接:https://www.luogu.org/problemnew/show/P2048 题目大意 一个长度为nnn序列aaa。寻找kkk个子序列要求长度在L∼RL\sim RL∼R之间,求这kkk个子序列的最大和。 解题思路 首先对aaa求出前缀和数组sss。题目转换为求kkk个数对要求两两之间距离在L∼RL\…

Sentinel(二)之Quick Start

转载自 Sentinel Quick Start 1.1 公网 Demo 如果希望最快的了解 Sentinel 在做什么,我们可以通过 Sentinel 新手指南 来运行一个例子,并且能在云上控制台上看到最直观的监控和流控效果等。 1.2 手动接入 Sentinel 以及控制台 下面的例子将展示应用如…

hdu5115-Dire Wolf【区间dp】

正题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid5115 题目大意 有nnn只狼,击败第iii只狼会扣aia_iai​加上于其相邻的狼的blbrb_lb_rbl​br​点hphphp。注意该狼被击败后会使原来于其相邻的狼变的相邻。 解题思路 显然区间dpdpdp,设fi,jf_…

.net的retrofit--WebApiClient库深入篇

前言本篇文章的内容是对上一篇.net的retrofit--WebApiClient库的深层次补充,你可能需要先阅读上一篇才能理解此篇文章。本文将详细地讲解WebApiClient的原理,结合实际项目中可能遇到的问题进行使用说明。库简介WebApiClient是开源在github上的一个httpCl…

Sentinel(三)之如何使用

转载自 Sentinel如何使用 简介 Sentinel 可以简单的分为 Sentinel 核心库和 Dashboard。核心库不依赖 Dashboard,但是结合 Dashboard 可以取得最好的效果。 这篇文章主要介绍 Sentinel 核心库的使用。如果希望有一个最快最直接的了解,可以参考 新手指…

jzoj4485-[GDOI 2016 Day1]第一题 中学生数学题【数学】

正题 题目大意 给出n0,k,p0n_0,k,p_0n0​,k,p0​ 然后有两问,求 ⌊n0−kp⌋(p−p0)\lfloor n_0-kp\rfloor (p-p_0)⌊n0​−kp⌋(p−p0​)的最大值,ppp为任意实数。⌊n0−kp1⌋(p1−p0)(⌊n0−kp2⌋−n1)(p2−p0)\lfloor n_0-kp_1\rfloor (p_1-p_0)(\lf…

ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)

上一篇ASP.NET Core中使用IOC三部曲(一.使用ASP.NET Core自带的IOC容器) ,我们说过ASP.NET Core中自带的IOC容器是属于轻量级的,功能并不是很多,只是提供了基础功能而已..所以今天我们主要讲讲如何采用Autofac来替换IOC容器,并实现属性注入注意:本文需要读者理解DI IOC并使用过…

Sentinel(四)之工作主流程

转载自 工作主流程 Overview 在 Sentinel 里面,所有的资源都对应一个资源名称(resourceName),每次资源调用都会创建一个 Entry 对象。Entry 可以通过对主流框架的适配自动创建,也可以通过注解的方式或调用 SphU API…

常用的依赖

<!--指定版本--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.3</version><relativePath/></parent><!--引入插件lombok 自动的set…

在 .NET Core 中的并发编程

原文地址:http://www.dotnetcurry.com/dotnet/1360/concurrent-programming-dotnet-core今天我们购买的每台电脑都有一个多核心的 CPU&#xff0c;允许它并行执行多个指令。操作系统通过将进程调度到不同的内核来发挥这个结构的优点。然而&#xff0c;还可以通过异步 I/O 操作和…

P5007-DDOSvoid的疑惑【树形dp】

正题 题目链接:https://www.luogu.org/problemnew/show/P5007 题目大意 一棵树每个点有点权(若T0T0T0点权为1&#xff0c;若T1T1T1点权为该点的编号)。求所有不包含祖先关系的集合的点权之和的和。 解题思路 设fif_ifi​表示iii的子树的集合点权之和&#xff0c;gig_igi​表…

配置YML整合Mybatis-映射文件配置

YML基本配置 #端口配置 server:port: 8090#配置数据源 spring:datasource:#如果使用高版本驱动 则添加cjdriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/jt?serverTimezoneGMT%2B8&useUnicodetrue&characterEncodingutf8&autoRe…

Sentinel(五)之流量控制

转载自 流量控制 概述 流量控制&#xff08;flow control&#xff09;&#xff0c;其原理是监控应用流量的 QPS 或并发线程数等指标&#xff0c;当达到指定的阈值时对流量进行控制&#xff0c;以避免被瞬时的流量高峰冲垮&#xff0c;从而保障应用的高可用性。 FlowSlot 会…

jzoj4382-[GDOI2016模拟3.11]历史【并查集】

正题 题目大意 有若干个事件 Kc:cK\ c:cK c:c值更改并且清除生气状态Rxy:R\ x\ y:R x y:新建一条x′x&#x27;x′到y′y&#x27;y′的边&#xff0c;若当前处于生气状态则x(x′n−c)%n,y(y′n−c)%nx(x&#x27;n-c)\%n,y(y&#x27;n-c)\%nx(x′n−c)%n,y(y′n−c)%n&a…