Git安装与配置

2023-10-30

1.Git安装与配置

请添加图片描述

1.1 什么是Git

  • Git是目前世界上最先进的分布式版本控制系统。

  • Git是免费、开源的

  • 最初Git是为辅助 Linux 内核开发的,来替代 BitKeeper

请添加图片描述

作者:Linux和Git之父李纳斯·托沃兹(Linus Benedic Torvalds)1969、芬兰

优点:

  • 适合分布式开发,强调个体。
  • 公共服务器压力和数据量都不会太大。
  • 速度快、灵活。
  • 任意两个开发者之间可以很容易的解决冲突
  • 离线工作

缺点:

  • 模式上比SVN更加复杂。
  • 不符合常规思维。
  • 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

官网: https://git-scm.com/

源码: https://github.com/git/git/

1.2 搭建Git工作环境

1.2.1 下载Git

打开 git官网,下载git对应操作系统的版本

请添加图片描述

1.2.2 安装

无脑下一步

请添加图片描述

请添加图片描述

  • **Git Bash:**Unix与Linux风格的命令行,使用最多,推荐最多

请添加图片描述

  • **Git CMD:**Windows风格的命令行

  • **Git GUI:**图形界面

1.2.4 Linux与Mac OS安装Git

Linux安装Git:sudo apt-get install git 命令行就可以安装了。

Mac OS安装Git: https://git-scm.com/download/mac,下载双击.pkg安装

1.2.5 Bash基本操作命令

命令名称 英文 作用
ls list 查看当前目录下的内容
pwd print work directory 查看当前所在目录
cd[目录名] change directory 切换目录
mkdir[目录名] make directory 创建目录
touch touch 创建文件
rm[文件名] remove 删除指定文件
cp[源文件或者目录] [目的文件或者目录] cpoy 复制
mv[源文件或者目录] [目的文件或者目录] move 移动
reset reset 重置终端
clear clear 清屏
history history 查看历史命令

1.3 Git配置 - git config

1.3.1、查看配置 - git config -l

请添加图片描述

查看不同级别的配置文件:

#查看系统config
git config --system --list
  
#查看当前用户(global)配置
git config --global  --list
 
#查看当前仓库配置信息
git config --local  --list

1.3.2 设置用户名与邮箱(用户标识,必要)

$ git config --global user.name "qf"  #名称
$ git config --global user.email qfwork@outlook.com   #邮箱

2.Git理论基础

2.1 工作区域

Git本地有三个工作区域:工作目录(Working Directory)暂存区(Stage/Index)资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

请添加图片描述

  • Workspace:工作区,就是你平时存放项目代码的地方
  • Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
  • Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换

2.2 工作流程

git的工作流程一般是这样的:

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件放入暂存区域;

3、将暂存区域的文件提交到git仓库。

因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

请添加图片描述

2.3 图解教程

个人认为Git的原理相比别的版本控制器还是复杂一些的,有一份图解教程比较直观:

图解教程英文原版

图解教程中文版

请添加图片描述

3 Git操作

3.1 创建工作目录与常用指令

工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文

日常使用只要记住下图6个命令:

请添加图片描述

3.2 获得Git仓库

创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库
请添加图片描述

3.2.1 创建全新仓库

# 在当前目录新建一个Git代码库
$ git init

请添加图片描述

3.2.2 克隆远程仓库

  • 注册登录gitee

  • 创建仓库

请添加图片描述

请添加图片描述

  • 克隆
    请添加图片描述

请添加图片描述

3.3 Git文件操作

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。GIT不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用SHA-1算法计算文件的校验和。

3.3.1 文件4种状态

  • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
  • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

3.3.2 查看文件状态

#查看指定文件状态
git status [filename]

#查看所有文件状态
git status

3.3.3 添加文件与目录

请添加图片描述

请添加图片描述

3.3.4 移除文件与目录(撤销add)

#直接从暂存区删除文件,工作区则不做出改变
git rm --cached <file>

请添加图片描述

3.3.5 免密登录

  • 打开cmd,执行ssh-keygen命令,三处选项直接回车

请添加图片描述

  • gitee官网设置

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

3.3.6 提交到远程仓库

请添加图片描述

请添加图片描述

总结

无分支工作流程如下:

  • 克隆项目:git clone url地址
  • 新增或修改项目(工作区
  • 将新增或修改的项目添加到暂存区(git add .)
  • 将暂存区的项目提交到本地仓库(git commit -m “注释”)
  • 每次上传项目到远程仓库之前,先重新拉取项目,避免冲突(git pull)
  • 将本地仓库文件提交到远程仓库(git push)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git安装与配置 的相关文章

  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • 是否可以在 git 存储库之外添加和提交文件?

    我们的文本文件分布在系统的各个角落 我们计划将这些文件中所做的所有修改添加到 git 存储库中 每次对这些文件进行修改都是由脚本进行的 因此 我们计划向该脚本添加新命令 以将文件添加到 git 存储库 但是 这些修改是同时进行的 我们可以为
  • 致命:无法将 HEAD 解析为有效引用

    我正进入 状态fatal Failed to resolve HEAD as a valid ref 每当我尝试承诺时 我努力了 echo ref refs heads master gt git HEAD 但它不起作用 也尝试过 git
  • 我在哪里? *(无分支)

    我已经熟悉了创建 合并和删除分支 我想知道我在哪里 这样我就不会将工作提交到错误的分支 我用git branch a看看我有哪些分支 我认为星号 显示我当前所在的分支 当我得到以下信息时 这意味着什么 no branch master or
  • GIT - 推送到 (GitHub) origin master 没有任何作用

    我已经分叉了某人的 GIT 存储库 https github com nippysaurus toodledo objc 将其克隆到我的本地计算机 显示带有以下信息的来源 remote origin Fetch URL https emai
  • git 如何查找分支源自的提交哈希

    假设我从主分支分支到主题分支 然后在主题分支上进行了一些提交 是否有命令告诉我主题分支源自的主分支上的提交哈希 理想情况下 我不必知道我做了多少次提交 试图避免 HEAD 5 我已经用谷歌搜索过 但似乎无法找到答案 谢谢 use git m
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • 我可以忽略全局 .gitignore 吗?

    我的全局 gitignore 一般都很棒 但对于这个一次性项目 我不希望应用全局规则 如何删除这个怪异存储库的全局 gitignore 规则 在您的存储库中运行此命令 git config local core excludesfile f
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 如何让 Gitlab 运行程序在成功构建时将代码合并到分支中

    嗯 标题几乎是不言自明的 总之 如果构建成功 我希望将一个分支 即开发 合并到另一个分支 即生产 我尝试了 jakub kania 解决方案 但我总是得到id rsa invalid format 我认为 gitlab 秘密变量以某种方式被
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • Git:以新名称签出旧版本的目录

    如何以新名称查看目录的先前版本 我一直都有一个目录foo在我的仓库中 我想创建一个目录foo old在我当前的工作树中 其内容是HEAD 2 foo 我同时需要两个版本 以确保它们给出相同的结果 测试这需要相当多的代码 并且需要同时提供两个
  • 使用 TFS REST API 获取 Git 提交的最新关联工作项

    我正在尝试获取关联的工作项使用 TFS REST API 进行 GIT 提交 https www visualstudio com en us docs integrate api git commits 我的请求 URL 如下所示 htt
  • GIT 和 Ruby:如何从 ruby​​ 脚本内部取消设置 GIT_DIR 变量?

    我编写了一个非常简单的 部署 脚本作为我的post update挂钩到我的裸 git 存储库中 变量如下 live domain mydomain com staging domain stage mydomain com git repo
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • 为什么从网上下载Git 2.0,总是得到1.9.4的安装包?

    为什么从网上下载Git 2 0 总是得到1 9 4的安装包 为什么你不能在互联网上的任何地方找到一个不仅标记为 2 0 而且你下载的安装存档也标记为这样的 Git 安装程序包 例如 这个2 1 3 站点 http git scm com d
  • 在 python 中找不到 git 可执行文件

    我试图使用访问密钥克隆 git 存储库 但是当我尝试运行它时 它抛出一个异常 说找不到 git 可执行文件 但我已经安装了 git 并且 in it py 显示了正确的路径 C Program Files Git bin 我还安装了 git
  • 如何在 git 中将我的功能分支变基到开发分支,尽可能减少冲突?

    我的功能分支已超过大约 30 次或更多提交 与此同时 在开发分支中 其他开发人员还推出了一些其他功能 因此 每次在开发中发布新功能时 我都会被要求 将开发分支重新建立到我的功能分支上 解决冲突 如有 继续在您的功能分支中开发 问题 第二步就
  • 我如何才能看到 Github 风格的东西,例如 git -repo 的打孔卡和时间线?

    我正在寻找一个可以可视化 git repo 工作的软件 我喜欢 Github 的一些功能和 Bitbucket 的一些功能 所以我不想使用它们 因为它们并不完美 我正在寻找创建类似视觉特征的方法 下面你可以找到一些部分 但仍然缺少很多谜题

随机推荐

  • 【Unity 3D学习笔记】P&D 过河游戏智能实现

    P D 过河游戏智能帮助实现 实现状态图的自动生成 讲解图数据在程序中的表示方法 利用算法实现下一步的计算 对于过河游戏 首先需要知道其中各个状态之间的转换关系 绘制状态转移图如下 其中 P代表出发岸上的牧师 D代表出发岸上的恶魔 加号和减
  • 竞品分析该怎么做

    竞品分析 作用 知己知彼 百战不殆 为自身产品设计提供功能 可用性 关键技术等方面的参考 提高自身产品的差异化程度 为新立项的产品 拍脑袋想出来的 降低风险 如何选择竞品 行业内领先的产品 通常可以根据一些百度指数 行业排名 业务相似程度来
  • 四款Python在线模拟器

    一 菜鸟工具 地址 http c runoob com compile 9 打开的界面是酱紫的 左边是代码输入框 右边是结果输出框 特点 1 支持切换Python2 Python3版本 2 不支持常用导入模块 例如pandas等 3 运行速
  • 使用Python生成docx文档

    1 首先需要安装doxc的公共库 pip install python docx U 2 安装成功后 使用这个库的方法import docx 3 这样生成的docx内容会有汉字显示不出来 4 这样生成的docx会有乱码 需要调整字体格式添加
  • 解决linux磁盘空间不足的方法

    磁盘空间不足的解决办法 1 首先确定是否是磁盘空间不足 输入命令 df h 查看磁盘信息 很明显 Filesystem下的挂载点 dev vda1 下的50G容量已经耗尽 这时最简单的办法就是找到大且无用的文件并删除 首选就是log文件 2
  • Flutter 常见问题总结

    文章目录 1 内容简介 2 使用Column等容器包裹ListView报错的问题 3 Navigator operation requested does not include a Navigator 4 设置Container背景色 5
  • Java开发中使用sql简化开发

    引语 在Java开发中 我们更希望数据库能直接给我们必要的数据 然后在业务层面直接进行使用 所以写一个简单的sql语句有助于提高Java开发效率 本文由简单到复杂的小白吸收 还请多多指教 使用MySQL数据库 先创建一个简单的表 DROP
  • elemenui自己本地跑起存在的问题&做自定义组件迭代规范

    npm install安装依赖出现PhantomJS not found on PATH 问题 PhantomJS not found on PATH PhantomJS not found on PATH Downloading http
  • 在 React 中应用设计模式:策略模式

    这篇文章是关于我们许多人在 React 和前端开发中遇到的一个问题 有时甚至没有意识到这是一个问题 在不同的组件 钩子 实用程序等中实现了一段逻辑 让我们深入了解问题的详细信息以及如何解决它 正如标题所暗示的 我们将使用策略模式来解决它 问
  • react性能优化的几种方法

    react性能优化的6中方法 1 避免使用内联函数 每次render渲染时 都会创建一个新的函数实例 应该在组件内部创建一个函数 讲事件绑定到函数 这样每次调用render时 就不会创建单独的函数实例 2 使用react fragement
  • 实验五(数据结构与算法实验) 稀疏矩阵

    实验五 数据结构与算法实验 稀疏矩阵 稀疏矩阵ADT的实现 在现实应用中 一些规模很大的特殊矩阵具有重要的地位 特殊矩阵可以采用二维数组存储 简单直接 顺序存储方式保持了矩阵中元素之间的二维线性关系 矩阵操作的算法都很简单 但是其空间的利用
  • 【深入理解C++】引用

    文章目录 1 变量的别名 2 变量的多个别名 3 引用存在的价值 4 引用的大小 5 从汇编角度看引用 6 结构体的引用 7 指针的引用 8 数组的引用 1 变量的别名 在 C 语言中 使用指针 Pointer 可以间接获取 修改某个变量的
  • AS3.0(ActionScript3.0)的开发工具

    转自Adobe 根据项目需求和可用资源 您可能希望使用几个工具中的一个 或结合使用多个工具 来编写和编辑 ActionScript 代码 Flash 创作工具除了创建图形和动画的功能之外 Adobe Flash CS3 Profession
  • portal.php无法打开,Discuz论坛为什么门户、论坛都只能访问到门户?论坛无法访问...

    最近无忧主机小编碰到一个非常奇怪的问题 正常情况下 discuz的门户和论坛是可以分开访问的 比如51php com forum php和51php com portal php 分别访问到的是论坛和门户 相信大部分的客户也是这样的 但是昨
  • sqlilabs靶场学习(part1:环境搭建)

    sqlilabs靶场学习 0x00 两个小目标 0x01 sqlilabs 简介 0x02 sqlilabs 环境搭建 1 db creds inc文件配置 2 setup db php文件创建表结构 0x03 测试关卡 0x00 两个小目
  • 架设传奇时打开DBC数据库出错或读取DBC失败解决方法

    架设传奇时打开DBC数据库出错或读取DBC失败解决方法 DBC右键 属性 高级 管理员身份运行 即可 转载于 https www cnblogs com tutublogs p 8136792 html
  • Python函数和模块运用实践

    1 函数的定义与调用 函数名尽量用英文单词命名 并且容易识别意思 函数的形参有4中类型的参数 位置参数 指定参数 缺省参数和不定长参数 在python实践过程中用的最多的是不定长参数 不定长参数方便代码重构 def introduction
  • 使用Clion开发STM32过程中的提示:此文件不属于任何项目目标,代码洞察功能可能无法正常工作(附带汉化方法)

    Catalog 一 问题描述 二 解决办法 三 附带Clion汉化方法 一 问题描述 笔者在学习STM32开发过程中 在使用CubeMX生成工程文件后 又新建了自己的User文件 在编译的过程中终端会提示 在文件中会提示 并且笔者检查代码确
  • SQLite基本操作

    SQLite SQLite是一个软件库 实现了自给自足的 无服务器的 零配置的 事务性的 SQL 数据库引擎 SQLite 源代码不受版权限制 SQLite 直接访问其存储文件 SQLite 是非常小的 是轻量级的 完全配置时小于 400K
  • Git安装与配置

    1 Git安装与配置 1 1 什么是Git Git是目前世界上最先进的分布式版本控制系统 Git是免费 开源的 最初Git是为辅助 Linux 内核开发的 来替代 BitKeeper 作者 Linux和Git之父李纳斯 托沃兹 Linus