什么是 Git?我为什么需要它?

2024-03-01

我对编程还很陌生,但我觉得我已经掌握了它的窍门,并且我正在尽力学习。我一直读到 Git 对于编程项目来说绝对至关重要,但我似乎无法弄清楚它实际上是什么does。谷歌也不想告诉我。该网站称其为“分布式版本控制系统”。呃……嗯?

有人可以向新手解释一下这东西是什么以及为什么它如此重要吗?


该网站称其为“分布式版本控制系统”。

让我们从一个想法开始版本控制系统。正如它所说的那样——它是一种存储和管理某事物的各种版本的方法。这在编程中非常重要,因为项目在开发时会被更改很多很多次,并且访问比当前版本更多的版本通常会很有用。它也会被多人改变;必须有某种方法来结合每个人的变化。

最简单的版本控制就是时不时地备份整个项目,并在各个开发人员之间传递这些快照或补丁。显然,采用这种幼稚的方法最终会遇到困难;这就是专用版本控制系统的用武之地。

版本控制系统将以智能方式跟踪您的所有历史记录,并允许您浏览该历史记录,查看有关更改的所有内容:它们是什么、谁进行了更改以及原因。稍微复杂一些,他们通常会有一些分支(可能为多个开发人员创建不同的开发线)和合并(将这些分支重新组合在一起)的概念。大多数版本控制系统还将提供许多高级功能。仅举一个例子,git 有一个名为“bisect”的工具,它可以让您通过历史记录进行二分搜索,以查找何时引入特定错误。整洁的东西。

版本控制有两大类:集中式和分散式。在集中式系统中,有一个中央存储库。它包含项目的所有历史记录,任何想要与该历史记录交互的人都必须通过该中央存储库。另一方面,像 git 这样的分布式系统为每个人提供了历史记录。每个开发人员最终都会获得存储库的一个副本(在 git 中称为克隆),该副本是完全自给自足的。没有必要与公共中央存储库进行交互,除非作为一个实际问题,一种发布内容供其他人查看的方式。这使得多人同时处理同一个项目变得更加简单,可能无需访问互联网,并且还使每个人都可以在自己的存储库中使用版本控制系统的全部功能,而不是有限的公共资源中央存储库的功能。

要获得关于如何最终使用像 git 这样的系统的精彩定性阅读,请从想要记住历史的基础知识开始,尝试git 的寓言 http://tom.preston-werner.com/2009/05/19/the-git-parable.html.

有关该主题的更多一般信息,请尝试维基百科:修订控制 http://en.wikipedia.org/wiki/Version_control_system.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是 Git?我为什么需要它? 的相关文章

  • 无法通过 HTTPS 克隆私有 Github 存储库

    我在通过 HTTPS 克隆私有 GitHub 存储库时遇到问题 如果我尝试使用以下方式克隆我的存储库 git clone https github com username repository 我收到错误 fatal remote err
  • GIT Rebase 对多个 0.5GB 二进制文件致命

    这个问题本质上是重新开rebase 期间 git 崩溃 https stackoverflow com q 7692944 1286639从来没有答案 我正在尝试从我的 secc 分支进行变基 git rebase main First r
  • 为 3 人团队设置 Git?

    这篇文章的目的是总结所有信息 为 3 人参加比赛建立一个封闭的存储库 请随意将我没有注意到的问题添加到列表中 请将每个问题的每个答案添加为单独的答案 情况一 草稿和文件可以在3人之间交换 这 writer 只能将文件推送到 存储库 情况B
  • 使用与后期步骤中的 Shell 脚本中的克隆相同的 http git 凭据

    我想要自动化我们的发布过程 并且我有一个 Maven 项目的以下 Jenkins 构建作业 使用配置的 Jenkins 凭证 用户名 密码 克隆 Git 存储库 执行一些 Maven 命令以进行构建 配置一个后步骤来执行一些额外的 Git
  • Azure DevOps/VSTS 始终在干净的存储库上报告“DETACHED HEAD”

    Friends 我现在厌倦了 Azure DevOps VSTS Jenkins 好多了 现在仍然如此 只是我的组织想要使用 Azure DevOps 我有一个谜团需要帮助来解决 以下是我的笔记本电脑上的存储库 它没有未跟踪或未提交的更改
  • 使用 GitHub 时防止将大文本文件添加到提交

    我们想要防止 非常大的文本文件 每个文件 gt 50MB 被提交到git代替git lfs 因为它们夸大了 git 历史 问题是 其中 99 大小差异的原因 这些是 YAML 文件 它们支持通过 Base64 编码进行二进制序列化 我们无法
  • 即使给出了公钥,Gitosis 也需要密码

    我在 Archlinux 上尝试配置 gitosis 时遇到了一些问题 http wiki archlinux org index php Setting Up Git ACL Using gitosis http wiki archlin
  • git push heroku master 通过代理后面的 ssh 出现错误

    简要背景 大家好 我是一名大学生 代理 10 3 100 211 8080 刚接触 ROR Git 和 Heroku 一直在关注 Ruby on Rails 教程 我解决了通过 ssh 推送 git repo 的问题 在我的 ssh con
  • 计算机死机后 Git 存储库损坏

    我的电脑死机了 现在我的一个 git 存储库也坏了 当我尝试结账大师时 它告诉我 warning ignoring broken ref refs heads master error Your local changes to the f
  • 在 github 上查找强制推送的提交者

    在我们的项目 托管在 GitHub 上 中 每隔一段时间就会有人意外强制推送 master 没有人知道是否这样做 我想找出是谁干的 以及背后有什么样的错误配置的工具或坏习惯 那么问题来了 如何识别进行强制推送的用户呢 当我拉动时 我看到这样
  • git am:补丁格式检测失败

    我以前从未在 Git 中使用过补丁 我需要一些帮助 我正在尝试将补丁应用到 Git 存储库来测试 Wine 补丁 特别是这个补丁在这里 https bugs winehq org attachment cgi id 60752 所以我做了以
  • 如何将推送的分支复制到另一个目录?

    我有一个分支叫master 生产 另一个称为development 当我从 master 推送提交时 post receive 挂钩执行 git work tree var www mywebsite com git dir var rep
  • React Native:即使文件不存在,也会出现 hprof 文件太大错误

    当我尝试跑步时git push origin master在我的 React Native 应用程序中 我得到 file android java pid60072 hprof is 564 94 MB this exceeds GitHu
  • 提交 ID 从哪里来?

    我只是对此很好奇 提交 ID 不能是随机的 因为它们需要是唯一的 不过 它们似乎是随机的 这让我想知道 为什么它们不只是连续的数字 我的意思是 它们只需要在存储库中是唯一的 对吧 或者我在这里错了 Thanks Git 提交 ID 是 SH
  • 运行“git gui”时如何跳过“松散对象”弹出窗口

    当我运行 git gui 时 我会看到一个弹出窗口 上面写着 This repository currently has approximately 1500 loose objects 然后它建议压缩数据库 我之前已经这样做过 它将松散对
  • 如何忽略Git中以数字开头的文件?

    在某个文件夹中 我有名为foo jpg bar png等等 我想将它们保留在版本控制中 除了那些命名为1 baz png 2 zaz jpg等 因为它们实际上是生成的 我应该添加什么条目 gitignore 正则表达式如 0 9 似乎不起作
  • Git 提交从 Windows 上的守护程序返回错误 docker/error 响应

    我正在为我的 Laravel 应用程序 BE 运行 docker 我对 readmeme md 文件进行了简单的更新 并尝试将此文件提交并推送到 git 当我尝试提交时 这就是我得到的 gt git c user useConfigOnly
  • Visual Studio 2013删除已删除的git分支

    我遇到这个问题 在 VS2013 中 当我从源创建一个新分支时 源分支的下拉列表列出了曾经创建的所有分支 这包括长期从本地存储库和远程 源存储库中删除的分支 如何删除已删除的分支 Visual Studio 将它们保存在本地缓存中 您可以从
  • 如何更改 Bitbucket 中的 git 提交消息?

    我需要更改 Bitbucket 中的旧 git 提交消息 我试过git rebase i并重写了我的消息 但是当我拉取并提交时 它只是将旧消息保留在 Bitbucket 中并合并了我的更改 这基本上是 4 个步骤的过程 但如果多个团队成员在
  • 从 git 签出后 nuget dll 丢失

    I have a C solution containing different projects On those projects I have some normal nuget packages like Newtonsoft Js

随机推荐

  • r 中的“部分”枢轴宽

    我有一个如下所示的数据框 Time Y 1 2 1 3 1 2 2 5 2 7 2 5 3 10 3 9 3 8 我想创造一些看起来像 Time R1 R2 R3 1 2 3 2 2 5 7 5 3 10 9 8 我必须保留时间列以进行进一
  • gccgo 上的精确

    当尝试在 Precise 上与 gccgo 链接时 出现以下链接错误 matt matt 1005P src gopath src meme gccgo cmd meme main go o meme usr bin ld cannot f
  • 通过函数传递表达式

    我在用着data table包并尝试编写一个函数 如下所示 require data table Function definition f function path key table data table read delim pat
  • Rvest html_nodes span div 和 Xpath

    我正在尝试通过阅读 XPath 代码来抓取网站 当我进入开发人员部分时 我看到这些行 span class js bestRate show 我想抓取 data abc 的所有值 假设网站上的每个元素都是一部电影 所以我想抓取页面上每部电影
  • SyncStateNotFound 错误:如何修复或避免?

    我使用 Microsoft Graph API 增量查询定期下载一些信息 消息 联系人 事件 但有时我会收到此错误 error code SyncStateNotFound innerError date 2018 06 01T06 31
  • 如何在 Watin 中通过标签名称查找元素?

    如何使用 Watin 使用 TagName 来查找特定元素或元素列表 从 WatiN 2 0 beta 1 开始 这已更改为 ie ElementWithTag h1 constraint 使用 Find XXX 方法时会创建约束 这是一个
  • Facebook ShareDialog 在完成时始终返回 .canceled

    共享对话框打开 Facebook 应用程序 尽管内容已成功共享 但我总是收到 取消打回来 在这两种情况下 当我取消共享时和共享成功时 知道出了什么问题吗 Pod 版本 Using Bolts 1 8 4 Using FBSDKCoreKit
  • 矩形内最大的空矩形

    我的数学不太好 所以我很难将公式转换为代码 而且我在谷歌上找不到任何现成的东西 我有一个包含很多小矩形的大矩形 我需要做的就是计算最大的空矩形 任何人都可以帮助我吗 这就是我想出的 没什么可说的 这是一个很大的失败 Rect result
  • 使用 MPI 和 C++ 从不同节点收集数据

    我正在开发一个包含多个从节点和一个主节点的项目 在某些时候 我需要将来自不同从节点 主节点也可以视为从节点 的数据收集到主节点 数据可以是任何类型 但我们假设它是 unsigned int 这就是数据在从节点上的样子 节点0 块01 块02
  • 在 [code] 和 [php] 标签内查找 URL [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我的字符串是这样的 string Link 1 code This is a textual line www google com
  • Jackson:忽略父类属性

    有什么方法可以告诉杰克逊在序列化子类时忽略父类的属性吗 class Parent private String parentProperty1 private String parentProperty2 getter setter Ign
  • 如何使用 MVVM 和 MVVM 工具包将属性绑定到文本框?

    我是 MVVM 新手 为了学习 我创建了一个示例应用程序 以便在单击按钮时在文本框中显示消息 在我的代码中 按钮命令工作正常 但该属性未绑定到文本框 如何使用 MVVM 将属性绑定到文本框 我的代码类似于下面给出的 View
  • ASP.NET vNext - 本地化 (.resx)

    如何使用 resx 文件通过 ASP NET vNext 云优化模式 进行本地化以及如何为当前线程设置区域性 System Threading Thread CurrentThread CurrentCulture System Threa
  • 为什么这个函数将RAX压入堆栈作为第一个操作?

    在下面的 C 源代码汇编中 为什么RAX被压入堆栈 据我从 ABI 的了解 RAX 可以包含调用函数中的任何内容 但我们将其保存在这里 然后将堆栈向后移动 8 个字节 所以我认为堆栈上的 RAX 只与std throw bad functi
  • 如何解决“允许的内存大小已耗尽”错误?

    我正在使用 phpspreadsheet 我想修改一个包含 4 张纸的 xlsx 文件 我只想在 2 张表中插入数据 但我想将所有 4 张表复制到新的 xlsx 文件中 当我这样做时 我收到此错误 致命错误 允许的内存大小 53687091
  • 是否有高级 Ag-Grid 事件来侦听列状态的任何更改?

    我将 Ag Grid 与 Angular 一起使用 我想听听any修改列状态的事件 截至目前 我必须列出所有事件 columnVisible onCol event columnMoved onCol event etc 是否有我可以依赖的
  • 在 python 中查询返回本地范围的对象

    下面是返回的程序function函数中定义的类型对象f其堆栈帧 f1 在程序退出之前仍然存在 下面是返回的程序int类型对象 值为1024 但返回后栈帧不存在int类型对象 根据上面两个图 为什么返回类型机制存在这种差异 当您返回时 框架不
  • 如何使用 XSLT 合并两个 xml 文件

    我有两个 xml 文件 需要使用 XSLT 将它们合并为一个 第一个 XML 是 原始 XML
  • 如何计算php中2个unix时间戳之间的间隔而不除以86400(60 * 60 * 24)

    我有 2 个 unix 时间戳 我位于亚太地区 奥克兰时区 GMT 12 夏令时 GMT 13 我想计算两个时间戳之间的天数间隔 其中一个在夏令时内 一个不在夏令时内 我的示例日期是 7 Feb 2009 1233925200 to 21
  • 什么是 Git?我为什么需要它?

    我对编程还很陌生 但我觉得我已经掌握了它的窍门 并且我正在尽力学习 我一直读到 Git 对于编程项目来说绝对至关重要 但我似乎无法弄清楚它实际上是什么does 谷歌也不想告诉我 该网站称其为 分布式版本控制系统 呃 嗯 有人可以向新手解释一