了解基本的 Git 工作流程:添加、提交、推送

2023-11-11

在软件开发领域,版本控制至关重要。在各种可用的版本控制系统中,Git 因其稳健性、灵活性和分布式架构而成为行业标准。在本文中,我们将重点介绍基本 Git 工作流程的基本步骤:添加、提交和推送。

了解 Git

在深入研究 Git 工作流程的复杂性之前,了解 Git 是什么至关重要。 Git 是一个分布式版本控制系统,允许多个开发人员同时处理一个项目,而不会覆盖彼此的更改。这是通过创建项目的不同版本来实现的,这些版本可以稍后合并。

Git 工作流程

标准 Git 工作流程由四个阶段组成:

  1. 工作区(工作目录)
  2. 索引(阶段)
  3. 本地存储库(头)
  4. 远程存储库
Understanding Basic Git Workflow: Add, Commit, Push
Understanding Basic Git Workflow: Add, Commit, Push

Git Add

`git 添加`是 Git 中使用的命令,Git 是一个版本控制系统,允许开发人员跟踪其项目中的更改。这`git 添加`命令是 Git 工作流程的重要组成部分,它会在工作目录中暂存更改以供下一次提交。当您对项目进行更改时,Git 最初不会跟踪这些更改。如果你想让 Git 跟踪这些变化,你需要将它们添加到暂存区,然后使用 git add 命令执行此操作。

使用 git add 有几种不同的方法:

  • `git 添加。`:此命令暂存整个工作目录中的所有更改。这包括所有新的、修改的和删除的文件。
  • `git add `: This command stages changes made to a specific file.
  • `git add -p` or `git add –patch`:此命令允许您以交互方式选择要暂存的内容块。
  • `git add -u` or `git add –更新`:此命令仅暂存对跟踪文件的更改(修改和删除,但不是新文件)。

将 git add 命令视为告诉 Git 的方式,“嘿,我在这里做了一些改变,我希望你知道这些”。此时,Git 确认了更改,但尚未记录或保存它们。这就是下一个命令发挥作用的地方。在本质上,`git 添加`将您的更改放入队列中,等待永久保存到项目的历史记录中。

使用方法如下:

1
2
$ git add f1.txt   # 添加特定文件
$ git add .        # 添加所有修改过的文件和新文件
Understanding Basic Git Workflow: Add Files
Git add files

Git 提交

The `git 提交`是 Git(版本控制系统)中使用的命令,用于保存对项目的更改。该命令采用已上演的所有更改`git 添加`命令,并记录项目历史的新“快照”或“提交”。

Git 中的每次提交都会创建一个唯一的 ID(SHA-1 哈希值),使您能够记录特定更改以及更改的执行者和时间。提交提供了项目的历史时间表,使您能够导航和了解项目如何随时间演变,甚至在需要时恢复更改。

当你运行`git 提交`命令,它通常会打开一个文本编辑器,您可以在其中编写提交消息。此消息应提供所做更改的简要说明,以供将来参考。

该命令的典型用法如下:

1
$ git commit -m “您关于更改的描述性消息”

-m 选项代表消息,允许您直接在命令行中写入提交消息。如果您不包含 -m 选项,Git 将打开一个文本编辑器供您编写消息。

Understanding Basic Git Workflow: Commit Files
Git commit files

Git Push

The `git 推送`Git中使用命令将本地存储库内容上传到远程存储库。它本质上是将您的提交传输到服务器上的远程存储库(例如 GitHub 或 GitLab)的命令,允许其他人查看您的更改并就您的更改进行协作。

对项目进行更改并提交这些更改后`git 提交`, 你用`git 推送`与更广泛的团队或公众分享这些更新。如果您在团队环境中工作,这是至关重要的一步,因为它允许其他人可以访问您的更改。

The `git 推送`命令通常与存储库和分支名称结合使用:

1
git push <remote> <branch>
  • 是远程存储库 URL 的别名。默认情况下,这通常是原点。
  • 是你想要推送的分支。

例如,如果您想将本地提交推送到main原始远程分支,您将使用以下命令:

1
git push origin main

请记住,git push 命令需要网络访问权限才能到达远程存储库,并且需要适当的权限才能对存储库进行更改。

Understanding Basic Git Workflow: Push Files to Remote
Git push files

将所有内容整合在一起

以下是如何在现实情况中使用这些命令的简单示例:

  1. 首先,使用终端或命令行导航到计算机上的本地存储库。
  2. 更改您的文件。
  3. 一旦您对更改感到满意,请使用`git 添加。`将所有更改添加到暂存区域。
  4. 添加更改后,使用以下命令提交它们`git commit -m“您的信息丰富的提交消息”`
  5. 最后,使用以下命令将更改推送到远程存储库`git push origin main`(假设您正在推送到主分支)。

结论

掌握添加、提交和推送等基本 Git 命令可以极大地提高开发人员的工作效率。这些命令构成了许多团队开发工作流程的支柱,允许协作工作和版本控制。值得注意的是,这只是冰山一角,Git 还可以提供更多功能,包括分支、合并和解决冲突。

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

了解基本的 Git 工作流程:添加、提交、推送 的相关文章

  • 为不同分支部署GitLab页面

    我正在使用 GitLab Pages 部署我的 React 应用程序 并且运行良好 这是我的gitlab ci yml Using the node alpine image to build the React app image nod
  • git推送失败:`拒绝更新签出的分支:refs/heads/master`

    我想将我对 JBoss 配置的本地修改存储在 git 中 为此 我设置了以下结构 lrwxrwxrwx 1 jboss jboss 19 Jan 24 11 53 current gt jboss as 7 1 0 CR1b drwxr x
  • 使用 git-cvsserver 和 CVS 工作副本获取 commitid 或“git描述”

    我有一些自动化工具可以通过以下方式访问 git 存储库cvs and git cvsserver 我希望这些工具能够看到他们签出的内容的提交 ID 这是否记录在CVS元数据目录 None
  • 如何调试 Jenkins 作业中无法运行程序“C:\Program Files\Git”?

    我正在使用 jenkins 构建我的 git 项目 这是我在查看日志时收到的错误 我在 jenkins 中使用 git 插件 您将如何解决该错误消息 Started by user anonymous Building in workspa
  • 如何在 NetBeans 中执行“git Blame”?

    NetBeans 内置了对 git 的支持 我可以做一个git blame在 NetBeans 内 如果是这样 怎么办 I googled https www google nl search q netbeans git blame它 但
  • 具有服务器端挂钩的托管 Git 解决方案?

    已经有一个类似的 版本控制托管解决方案 带有预提交挂钩 关于SO的问题 然而 提出这个问题的用户只需要客户端钩子 我正在寻找一个允许您配置的 Git 主机服务器端 hooks 我寻找这个的原因是为了防止开发人员能够在特定分支上 push f
  • Git 与 master 合并,无需签出 master

    每次我需要的时候merge develop with master I do git checkout master git merge develop 有时我忘记切换出去master 因此 我在运行时错误地更改了代码master 它可能会
  • 只在一个文件上应用 git merge stategy 吗?

    当将一个分支合并到另一个分支时 可以定义合并策略 例如 git merge release X ours 当将发布分支中的内容合并到当前分支时 这会在全局范围内应用 我们的 策略 是否可以仅对一个特定文件应用此策略 例如 git merge
  • git 交互式变基:停止而不提交

    长话短说 有办法进去吗git rebase i停止编辑 没有提交 ID TLDR 更长的版本 背景 With git rebase i 我得到一个文本编辑器 我可以在其中定义命令列表 从pick COMMIT ID在每一行上 其中一个选项是
  • 即使在签出到另一个分支后也无法删除本地分支

    我正在尝试删除我的本地分支并尝试了我在这里找到的大多数解决方案 即签出到另一个分支然后运行git branch D or d
  • git-svn 期间“RA 层请求失败:REPORT 请求失败”

    我一直在尝试使用以下命令 Git 克隆 Google Code SVN 存储库 git svn clone stdlayout https wtorrent project googlecode com svn wtorrent git 它
  • 如何在GIT中检出单个文件

    我们开发了一个自动部署工具 用于在 jboss 服务器中部署文件 ear war 和 jar 开发人员将在 Visual Source 安全中签入文件 自动部署工具会自动一一检出开发者指定的最新文件 并使用API 将其部署到jboss服务器
  • 图表贡献者为空

    我在 github 上有几个项目 但其中一些项目的贡献者图是空的 即使我的 gitconfig 设置了名称和电子邮件 https github com jlengrand batchWaterMarking graphs contribut
  • 使用与后期步骤中的 Shell 脚本中的克隆相同的 http git 凭据

    我想要自动化我们的发布过程 并且我有一个 Maven 项目的以下 Jenkins 构建作业 使用配置的 Jenkins 凭证 用户名 密码 克隆 Git 存储库 执行一些 Maven 命令以进行构建 配置一个后步骤来执行一些额外的 Git
  • 如何删除“致命:松散物体”?

    我的一个克隆存储库是从 git fsck 获取的 致命 松散对象 40bda4e3b79c3d7bf598df31d9e68470f97a3f79 存储在 git objects 40 bda4e3b79c3d7bf598df31d9e68
  • 获取引用而不下载对象[重复]

    这个问题在这里已经有答案了 我想检查 origin master 是否与我的 HEAD 不同 I do not想要git fetch 因为它可能非常昂贵 我滥用 git 的方式使得成本高得令人望而却步 任何允许我从远程获取提交列表或顶部提交
  • 理解 git log --stat 输出

    我试图理解的输出git log stat命令 第一个输出 commit 4c90aee323acc337a37040e02a0a3644f4155738 Date Fri May 1 22 46 11 2015 0400 Submittin
  • 从TFS迁移到GIT,共享项目到nuget

    我所在的软件团队由 4 5 名开发人员组成 他们从事一个 TFS 项目 我们正在考虑将整个代码库移至 GIT 该代码库由约 50 个 Visual Studio 2013 解决方案组成 分为约 300 个项目 引用项目中另一个程序集的首选过
  • 使用 'gitbranch' 命令显示当前 git 分支

    我在处理太多分支时遇到问题 需要花费很多时间才能找到我现在正在处理的当前分支 有没有办法在使用时显示的列表顶部列出当前分支git branch命令 如果您只想要签出分支 请使用git branch show current
  • 计算机死机后 Git 存储库损坏

    我的电脑死机了 现在我的一个 git 存储库也坏了 当我尝试结账大师时 它告诉我 warning ignoring broken ref refs heads master error Your local changes to the f

随机推荐

  • 【Ubuntu14.04安装】网络初始化配置

    一 环境 1 Ubuntu Server 14 04 2 Vmware Workstation 9 0 3 物理机 Windows7 64bit i5 3470 3 20Hz 8GB 二 基本点 1 弄清楚物理机和虚拟机之间的连接途径有三种
  • BroadcastReceiver普通广播、有序广播、拦截广播、本地广播、Sticky广播、系统广播

    http blog csdn net qq 30379689 article details 53341313 前言 BroadcastReceiver的简介 普通广播 自定义广播 有序广播 拦截广播 本地广播 Sticky广播 系统广播
  • 直流电机PID调速

    文章写的是基于数字PID控制器的闭环电机速度控制系统 系统以STC89C51单片机为控制核心 通过电机驱动L298N 这里因为所用电机是个小马达 额定电流和堵转电流不算大 所以用的是TC1508S做驱动 控制电机转速 电机转速控制采用PWM
  • 2013年CSDN高校俱乐部全国百所高校巡讲讲师招募

    CSDN高校俱乐部 以下简称 俱乐部 是由全球最大中文IT技术社区CSDN发起的 由全国各高校在校生代表自发加入的IT技术学习型组织 CSDN由此搭建起行业与校园之间的桥梁 公益为各俱乐部提供行业资讯 技术学习 专家交流 技术竞赛等学习服务
  • markdown绘图插件----mermaid简介

    作者 黄永刚 mermaid简介 当撰写文档的时候 对于流程图的生成大多使用Visio等繁重的工具 没有一种轻便的工具能够画图从而简化文档的编写 就像markdown那样 mermaid解决这个痛点 这是一个类似markdown语法的脚本语
  • [PDDL人工智能] 02.PDDL规划领域定义语言之语法理解和示例详解

    智能规划来源于人工智能对理性行为研究 针对一个具体行为的实施目的 开展动作规划以模拟或指导行为的实施 是AI开展研究的关键问题 本文主要介绍PDDL规划领域定义语言的基础语法知识和示例详解 希望文章对您有所帮助 该系列文章主要介绍PDDL人
  • 如何在 Debian 11 上安装 NVM

    NVM 代表 Node Version Manager 它是一个用于安装 Node js 的命令行实用程序 它只允许程序员在他们的帐户中安装 Node js 这意味着安装是根据用户特定完成的 单个系统中的所有用户都有自己的 Node js
  • 如何在 Ubuntu 18.04 中添加交换空间

    交换对于需要比物理可用内存更多的 RAM 的系统非常有用 如果内存已满并且系统需要更多 RAM 才能正常运行应用程序 它会检查交换空间并在那里传输文件 一般来说 交换区是硬盘的一部分 用作系统上的 RAM 我有一个正在运行的虚拟机 上面没有
  • 如何在 Apache 中配置 X-Frame-Options

    X Frame Options 用作 HTTP 响应标头 这可以防止您的网站内容嵌入到其他网站中 根据此值 浏览器允许其他站点在 iframe 中打开网页 它还可以保护您的 Apache Web 服务器免受点击劫持攻击 X Frame Op
  • 如何在基于 Debian 的系统上从源代码安装 Wine

    作为 Windows 程序的狂热用户 您可能会发现有时需要在 Ubuntu 系统上使用特定程序 尽管还有其他选项 例如虚拟机或 Wine 等程序 它有助于在 Linux 上运行 Windows 程序 但它们涉及一些工作 而且并不是运行这些程
  • 了解互联网协议 (IP)

    数字时代的定义是连通性 从个人消息传递到商业通信再到国际政府关系 几乎所有交互都是通过万维网进行的 互联网协议 IP 是这个庞大网络的核心 可确保通信顺畅可靠 本文旨在阐明我们数字生活的这一基本方面 什么是互联网协议 IP 从最广泛的意义上
  • 如何使用 Rsyslog 和 MySQL 设置 LogAnalyzer

    本文是文章的第二部分使用 MySQL 和 LogAnalyzer 设置 Rsyslog在 CentOS RHEL 系统上 在里面第一部分我们已经将Rsyslog与MySQL数据库服务器集成 所有日志现在都保存在数据库中 下面是我们在第 1
  • 如何在 Ubuntu 22.04 上安装 Linux、Nginx、MySQL 和 PHP(LEMP Stack)

    Linux操作系统是非常流行且广泛使用的服务器操作系统 它为世界上大多数网站提供支持 包括雅虎 谷歌和 Facebook 等一些最著名的网站 逻辑首字母缩略词 LAMP 通常用来指自由和开源软件的混合物 这些软件经常一起使用来创建可以处理动
  • 如何统治科技世界?

    谷歌 Facebook 苹果和微软等科技巨头正在真正统治世界 他们不仅在商业和技术领域做出了贡献 而且还大力投资于社会责任项目 当他们从车库或大学宿舍起步时 是什么让他们成为科技界的巨头 他们的成功有很多因素 但所有这些科技巨头都有一些共同
  • 如何在 Debian 11/10 上安装 Tomcat 10

    Apache Tomcat 是一个开源 Web 服务器 带有用于发布基于 Java 的 Web 应用程序的 Servlet 容器 Tomcat 是由 Apache 软件基金会支持下的开放开发者社区开发和维护的 截至目前 Tomcat 10
  • 掌握 Bash 中的数字比较:综合指南

    Bash 是 Linux 和 Unix 系统中流行的命令行 shell 允许用户通过运行脚本或执行命令来有效地执行各种任务 编写 Bash 脚本的一个关键方面是能够根据变量值或命令输出做出决策 一项常见的决策任务是比较数值 本文提供了掌握
  • 如何并排放置两个 Div 元素

    在 Web 开发中 定位 HTML 元素的方法有无数种 一种常见的布局要求是并排放置两个 div 元素 这种布局在网页设计中经常使用 特别是当需要将内容水平分成不同的部分时 有多种方法可以实现此布局 包括使用 float flexbox 和
  • 如何在 RHEL 和 CentOS Stream 9 上安装 PHP 8.2-7.4

    PHP 是一种流行的脚本语言 用于开发动态 Web 应用程序 它是一种开源编程语言 可以轻松安装在包括 CentOS 9 在内的各种操作系统上 在本文中 我们将引导您完成在 CentOS 9 上安装 PHP 的步骤 在开始之前 请确保您拥有
  • Linux 中使用 GPG 密钥对的文件加密

    GPG 基本文件加密不需要公钥 私钥 但为了使加密文件更安全 您可以使用 RSA DSA 算法 这些算法生成公钥和私钥来加密文件 本文将帮助您在 Linux 中使用 GPG 密钥对完成以下三项文件加密任务 创建密钥对 为同一用户帐户本地加密
  • 了解基本的 Git 工作流程:添加、提交、推送

    在软件开发领域 版本控制至关重要 在各种可用的版本控制系统中 Git 因其稳健性 灵活性和分布式架构而成为行业标准 在本文中 我们将重点介绍基本 Git 工作流程的基本步骤 添加 提交和推送 了解 Git 在深入研究 Git 工作流程的复杂