一、Git基础

1、Git简介

Git是一种分布式版本控制系统,由Linux之父Linus开发。

所谓分布式版本管理系统,就是在每一台机器上都有一个完整的仓库。

2、Git官网

Git官网:git

在官网上可以获取Git的安装软件。

除此之外,还可以下载《progit》——这是最棒的Git学习资料,而且有中文版本。

3、Git安装

https://git-scm.com/downloads官方下载地址下载对应的操作系统版本一步步安装即可。

4、Git基本配置

安装完成之后,在任意目录下,右键 Git Bash Here

全局配置邮箱和用户名(–global表示全局配置,也可以不配置,每个仓库单独配置)

$ git config --global user.name "test"
$ git config --global user.email test@qq.com

5、Git基本概念

5.1、Git工作区域

Git有四个工作区域:

  • 工作区

    简单说工作区就是我们项目的目录。

  • 仓库区/本地仓库

    工作区有一个.git目录,其实这个不是工作区,是Git的版本库,存储了Git仓库的所有版本信息

  • 暂存区

    暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作“索引”,

    不过一般说法还是叫暂存区域。

  • 远程仓库

    对于分布式版本管理系统,远程仓库不是必须存在的,但是通常项目都会有远程仓库。例如Github就是我们非常熟悉的远程仓库。

    基本的Git工作流程如下:

    • 在工作目录修改文件
    • 暂存文件,将文件快照放入暂存区
    • 提交更新,找到暂存区的文件,将快照永久性存储到到 Git 仓库区(本地)
    • 将本地仓库的变更推送到远程仓库

以上几个区域的关系可以用下图表示:

5.2、Git分支

分支是为了将修改记录的整个流程分开存储,让分开的分支不受其它分支的影响,所以在同一个数据库里可以同时进行多个不同的修改。

Git 为我们自动创建的第一个分支,也叫主分支,一般其它分支开发完成后都要合并到 master

5.3、Git文件状态

在git中,文件主要有四种状态:

  • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

  • Unmodify(Committed): 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改

  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

二、Git应用实践

看完上面的Git基础,你可能有一些迷惑,接下来,我们以实际工作中开发的流程来加深对Git的理解吧。

1、克隆项目

可以通过在工作区使用git init来初始化一个Git仓库,但通常开发中我们不会这样做,因为实际的项目大部分已经进行了部分开发,并进行了版本管理,所以我们首先做的是从远程仓库克隆项目。

这里我从Gitee(一般开发项目的远程仓库是部署在内网的GitLab) fork了一个开源项目,将这个项目作为远程仓库的项目:

点击克隆下载,可以看到项目的路径,

  • HTTPS是凭据式的路径,使用此路径,向远程仓库推送代码的时候需要凭据(账号密码);

    这种方式向远程仓库提交,会要求账号密码,输入完成之后,Win10操作系统可以选择记住凭据,这样就不用每一次都输入了,Win10操作系统管理凭据 控制面板 → 用户帐户 → 凭据管理器 → Windows凭据

  • SSH是秘钥式的路径,向远程仓库推送代码的时候,需要本地的私钥和远程仓库的公钥对应。

    SSH配置可以参考 Windows配置Github、Gitee共存的Git环境,这里就不详细展开讲解。

我已经进行了公私钥的配置,所以这里选择SSH。

使用git clone命令克隆项目

2、代码管理

项目已经成功克隆,接下来要进行我们的开发了。

2.1、创建分支

通常开发不是在Master分支上,而是在开发分支上,使用 git branch develop创建一个新分支:

可以通过git branch命令列出所有分支:

可以看到我们新建的分支。

2.2、切换分支

使用git checkout develop命令切换到新建的develop分支:

2.3、添加文件到暂存区

接下来,我们再develop分支上进行一些开发操作,我这里对 redeme 进行了一些修改,需要把修改添加到暂存区。

  • 首先通过 git status命令查看工作区文件状态

  • 接下来使用 git add README.md命令(可以使用git add .添加所有修改)将更改添加到暂存区

可以看到文件已经添加。

2.4、提交修改到仓库

接下来使用git commit -m "

Git全栈开发者使用指南的更多相关文章

  1. php大力力 [038节] 全栈工程师的含义

    管理时间 http://www.nowamagic.net/librarys/eight/posts/2753 从知乎上看到“全栈开发者”讨论之后的自黑 什么是全栈开发者 https://beeclo ...

  2. Web 全栈大会:万维网之父的数据主权革命

    大家好,今天我和大家分享一下由万维网之父发起的一场数据主权革命.什么叫数据主权?很容易理解,现在我们的数据是把持在巨头手里的,你的微信通讯录和聊天记录都无法导出,不管是从人权角度还是从法理角度,这些数 ...

  3. 最全面的Git 使用规范装逼指南[转载]

    <!DOCTYPE html> <script type="text/javascript"> window.logs = { pagetime: {} } ...

  4. .NET全栈开发工程师学习路径

    PS:最近一直反复地看博客园以前发布的一条.NET全栈开发工程师的招聘启事,觉得这是我看过最有创意也最朴实的一个招聘启事,更为重要的是它更像是一个技术提纲,能够指引我们的学习和提升,现在转载过来与各位 ...

  5. Sentry 开发者贡献指南 - SDK 开发(事件负载)

    内容整理自官方开发文档 系列 Docker Compose 部署与故障排除详解 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentr ...

  6. 《web全栈工程师的自我修养》读书笔记

    有幸读了yuguo<web全栈工程师的自我修养>,颇有收获,故在此对读到的内容加以整理,方便指导,同时再回顾一遍书中的内容. 概览 整本书叙述的是作者的成长经历,通过经验的分享,给新人或者 ...

  7. 《Web全栈工程师的自我修养》读书笔记(转载)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/5 ...

  8. 全栈开发必备的10款Sublime Text 插件

    Sublime Text 具有漂亮的用户界面和强大的功能,例如代码缩略图,多重选择,快捷命令等.Sublime Text 更妙的是它的可扩展性.所以,这里挑选了全栈开发必备的10款 Sublime T ...

  9. 全栈开发必备的10款 Sublime Text 插件

    Sublime Text 具有漂亮的用户界面和强大的功能,例如代码缩略图,多重选择,快捷命令等.Sublime Text 更妙的是它的可扩展性.所以,这里挑选了全栈开发必备的10款 Sublime T ...

随机推荐

  1. (九)ELF和动态链接

    前言: 我们都知道我们所写的程序是被编译为一条条的CPU指令去执行的,但是在linux系统下能够运行的程序在windows环境下却运行不起来,但是我们使用的CPU明明是一样的,这又是为什么呢? 一.程 ...

  2. 大厂是如何用DevCloud流水线实现自动化部署Web应用的?

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢 ...

  3. Scrapy简明教程

    本文通过示例简要介绍一下使用Scrapy抓取网站内容的基本方法和流程. 继续阅读之前请确保已安装了scrapy. 基本安装方法为:pip install scrapy 我们已经在之前的文章中初步介绍了 ...

  4. 第11.6节 Python正则表达式的字符串开头匹配模式及元字符“^”(插入符、脱字符)功能介绍

    符号"^"为插入符,也称为脱字符,在Python中脱字符表示匹配字符串的开头,即字符串的开头满足匹配模式的要求.这个功能有点类似搜索函数match,只是这是通过搜索模式来指定,而m ...

  5. 第11.27节 Python正则小结:正则静,静则明,明则虚,虚则无为而无不为也

    正则表达式的章节到此就结束了,老猿现在觉得对我们这些身具程序猿基因特色的人来说,正则表达式应该是蛮可口的开胃小菜. 在写标题时,本来想写"正则表达式小结",后来想了想,百度了一下, ...

  6. 使用PyQt(Python+Qt)+动态编译36行代码实现的计算器

    PyQt是基于跨平台的图形界面C++开发工具Qt加Python包装的一个GPL软件(GPL是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译),Qt基于 ...

  7. PyQt(Python+Qt)学习随笔:快速理解Qt 中Action是什么

    一.引言 Qt中Action这个词接触很久了,一直以来没去学习,今天终于准备学习了,查了些资料,初步总结为: Action为界面操作的抽象,应用程序可以通过菜单,工具栏按钮以及键盘快捷键来调用通用的命 ...

  8. jarvisoj flag在管理员手上

    jarvisoj flag在管理员手上 涉及知识点: (1)代码审计和cookie注入 (2)哈希长度拓展攻击 解析: 进入题目的界面.看到 那么就是想方设法的变成admin了.挂上御剑开始审计.发现 ...

  9. CF1373F Network Coverage

    题目链接 对于每一个 \(i\) 可以看作一个管道.赋予三个信息: \(\text{minIn}_i\) 表示至少要从上一家 \(i - 1\) 得到连接数,才能正常供给 \(i\) 城市 \(\te ...

  10. AcWing 337. 扑克牌

    大型补档计划 题目链接 把状态实质相同的划分为一类... 发现花色.具体牌值的多少均不影响方案,考虑等效转化题目. 设 \(f[A][B][C][D][k]\) A 个 1 张相同,B 个 2 张相同 ...