TortoiseGit 入门指南03:提交

这篇具有很好参考价值的文章主要介绍了TortoiseGit 入门指南03:提交。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

你现在应该已经有了一个仓库,在工作过程中会对项目做一些修改,比如添加代码、修复错误等等,你将不定时的将这些更改 提交(commit)到代码仓库。

术语 提交 是将 暂存区 内容放入 版本库 。这个过程涉及到 Git 的一些基本概念,需要在这里说明。我在《TortoiseGit 入门指南02》中解释术语 工作区(workspace)、暂存区(Stage)、版本库(Repository)时说过:

这是 Git 的基本概念之一,你可以忽略这部分内容,但是理解这些基本概念有助于理解 Git 的工作原理,从而更游刃有余的使用版本控制。

这里,我仍然持这个观点。所以当出现新的 Git 基本概念时,让我们先来了解这些重要的概念含义。

工作区 中的每一个文件都不外乎两种状态:未跟踪(untracked)或 已跟踪(tracked)。已跟踪的文件是指那些被纳入了版本控制的文件,简而言之,已跟踪的文件就是 Git 已经知道的文件。工作区中除已跟踪文件外的其它所有文件都属于未跟踪文件,它们既不存在于版本库的记录中,也没有被放入 暂存区

对于 已跟踪 文件,它们的状态可以是 已修改(modified)、已暂存(staged)、未修改(unmodified)三种之一。

在编辑文件时,Git会将它们识别为 已修改,因为自上次提交(commit)以来它们已经被改动(changed)。暂存 已修改的文件,然后 提交 所有 已暂存 的更改,使这些文件再次变为 已跟踪未修改 状态。文件状态的转换流程为:
TortoiseGit 入门指南03:提交,Git,git,TortoiseGit

需要特别说明的是,当使用 TortoiseGit 软件时,软件屏蔽了“暂存”这个概念,在 TortoiseGit 软件中“提交”,相当于图示中的“暂存 + 提交”。

版本控制能不能发挥最大作用,取决于恰当的提交以及提交时写下的描述信息

  1. 每当完成了一个新功能、修复了一个错误、重构一个模块或者调整格式时,都应该 提交 (commit)一次代码,以便 Git 记录这次修改。
  2. 每次提交,提交信息 都应该清晰、准确。关于提交信息格式,可以参考我的博文《Git提交信息格式》。

提交需要程序员手动操作完成,提交信息需要程序员组织与填写,所以可以这么说,程序员决定了版本控制软件能起多大作用。

1 第一次提交前的准备

第一次提交之前,需要在工作区根目录下生成 .gitignore 文件,目的是忽略不需要版本控制的文件,比如编译器生产的中间产物,临时文件等等。

1.1 生成 .gitignore 文件

在工作区根目录下单击鼠标右键,在弹出的右键菜单中单击 Git Bash Here ,打开 Git 命令行界面。
TortoiseGit 入门指南03:提交,Git,git,TortoiseGit
在Git命令行中输入:

touch .gitignore

将会在工作区根目录下生成 .gitignore 文件。

1.2 编辑 .gitignore 文件

使用 notepad++ 打开该文件(不要用 Windows 自带的记事本,记事本会改变文件的格式),输入要忽略的文件或目录,支持*通配符。对于使用 Keil 开发平台的情况,可以参考我的 .gitignore 文件:

# Keil Generated output files in the sub-directories .\Listings and .\Objects
*.lst
*.o
*.d
*.crf
*.lnp
*.axf
*.htm
*.build_log.htm
*.dep
*.iex
*.i
*_2i
*.l2p
*.fed
*.map
*.hex
*.bin
*.Bak

#Keil Project screen layout file
*.uvguix.*
*.uvgui.*

#JLINK file
JLinkLog.txt
*.dbgconf

这一步很重要,而且只能在第一次提交前完成。

重要是因为与代码文件相比,编译器产生的文件通常又多又大,对用户也没什么用。将来我们将仓库推送到云端的托管平台时,这些文件会占用存储空间,也会拖慢上传和下载速度,所以需要将它们排除在版本控制之外。

只能在第一次提交前完成是因为一旦仓库中有某个类型的文件后,再想忽略它们,虽然有办法,但是会执行很繁琐的步骤,感兴趣的可以自己搜索相关内容,关键字为“Git 如何忽略已提交的文件”。

2 提交

有了前面的知识做铺垫,使用 TortoiseGit 软件提交修改就很容易了。

选择要提交的文件和/或文件夹,鼠标右键:TortoiseGit - Commit->master,将弹出“提交对话框”。

提交对话框会显示每个更改的文件,包括已修改、已删除和未跟踪的文件。如果不希望提交某个文件,只需要取消选中该文件。

默认提交对话框仅列出所选文件或目录及其子目录文件。如果要列出项目的所有文件,只需单击 Show Whole Project 复选框。
TortoiseGit 入门指南03:提交,Git,git,TortoiseGit
在提交对话框中双击任何已修改的文件,会启动差异比较程序以显示最近的修改。也可以拖拽文件到其它文本编辑器或IDE程序,以查看文件详情。比如 lwip 协议栈某次提交的差异:
TortoiseGit 入门指南03:提交,Git,git,TortoiseGit
底部显示窗中的列可以自定义:在标题行右键单击,弹出右键菜单选择要显示的列,比如可以显示“Last Modified”(最后修改时间)、“Size”(文件大小)等。这些列宽也可以手动改变,这些自定义选项具有记忆功能,下次启动还可以看到相同的标题。单击每一列的标题可以对文件和目录排序。
TortoiseGit 入门指南03:提交,Git,git,TortoiseGit
选中一个文件,右击鼠标可以调出上下文菜单,提供了更多选项。
TortoiseGit 入门指南03:提交,Git,git,TortoiseGit

  • Compare with base:与基础版本比较(与最近一次提交做对比),双击该文件也能实现相同效果。

  • Show changes as unified diff:以统一差异(unified diff)方式显示更改。

  • Revert...:将文件恢复或者将文件内容恢复成最后一次提交时的状态(注意这可能丢失当前工作)。

  • Skip worktree:跳过工作树。指示 Git 停止跟踪指定文件。

    比如数据库配置文件,这个配置文件很复杂,远程仓库必须保留一份默认的版本,以便新克隆的项目能包含这个配置文件。一旦克隆到本地,就会修改这个配置文件。因为大家本地数据库配置都不同,导致每个人的数据库配置文件也不同。所以不能将这个文件提交(push)到服务器,否则别人拉取(pull)的时候会把本地的配置搞坏。这种情况如何处理?

    这个时候可以将文件标记为 skip worktree ,之后无论你是否修改此文件,Git 都会将它视为未修改。

    测试:

    将一个修改过的文件 Note.txt 标记为 Skip worktree,文件 Note.txt 叠加的图标由已修改状态改为正常状态,提交列表中没有文件 Note.txt。将工程推送到远程仓库,查看远程仓库中的文件 Note.txt,发现本地修改并没有推送到远程仓库。从远程仓库拉取工程,本地仓库中的文件 Note.txt 没有改变,修改的内容仍然存在。

  • Assume Unchanged:将文件标记为假定未修改

    为什么要将一个文件假定未修改

    当检查一组文件是否被修改的开销很大时,比如对一些体积庞大的文件进行修改,但每次保存Git都要计算文件的变化并更新工作区,这在硬盘慢的时候延时卡顿非常明显。这个时候可以将文件标记为假定未修改。一旦标记为假定未修改,Git 会假定索引中此部分相关文件于工作副本内不作更改。当远程仓库中该文件更改后,此标记自动失效。

    所以将文件标记为假定未修改一般用于:

    1. 当你修改一个巨大的文件时,首先将其标记为假定未修改,让 Git 忽略你对文件做的修改。
    2. 当工作告一段落时,取消假定未修改标记,于是 Git 只需要做一次更新计算。
    3. 提交、推送
  • Restore after commit:提交后恢复文件。

    比如我在一个文件中修改了多处代码,然后我发现这些修改属于两个不同的特性,我想分开提交;又比如我在一个文件中修改了多处代码,这些修改的一部分解决了一个紧急BUG,需要马上提交,但是其它修改因为没有完成所以不能提交。类似这些应用场景可以使用下面方法解决:

    右击提交对话框中的该文件,在弹出菜单中选择 Restore after commit ,TortoiseGit 会自动创建一个文件副本。这时就可以从提交对话框中将该文件拖到编辑器中,或者双击该文件打开 TortoiseGitMerge 工具,将不需要提交的代码去除掉,保存后提交文件。

    等到文件提交完毕,TortoiseGit 会自动将之前保存的副本替换掉提交的文件,就好像在提交前删除的代码又自动回来了一样。

  • Show log:调出提交日志对话框。

  • Blame:将打开 TortoiseGitBlame 程序,显示文件的每一行的作者、最后修改的版本和其它信息。

  • Export selection to...:将选中的文件导出到指定位置,文件名与原来相同并保留目录结构。

  • View revision in alternative editor:用替代的编辑器(默认notepad2)打开选中的文件

  • Open:使用系统默认编辑器打开选中文件

  • Open with...:将弹出 打开方式 对话框,自己选择应用程序打开选中的文件

  • Explore to:打开文件所在目录

  • Move to changelist:移动到变更清单。

    1 变更清单

    如果提交的文件有很多,在提交对话框中这些文件都会混合在一起,可以使用变更清单(change lists)功能为文件分组,更容易看清要提交的文件。

    右击提交对话框中的文件,在弹出菜单中选择 Move to changelist,将文件添加到变更列表或者新建一个变更列表。比如可以将.txt.xml.md格式文件添加到Docs分组中。

    2 从提交列表中忽略指定文件

    如果不想每次都提交某个已更改文件,可以右击提交对话框中的该文件,在弹出菜单中选择 Move to changelist - ignore-on-commit,将这个文件加入到 “ignore-on-commit” 分组中,然后这个文件会自动取消选中。等到你认为可以提交该文件时,可以在提交对话框中手动选中它。









读后有收获,资助博主养娃 - 千金难买知识,但可以买好多奶粉 (〃‘▽’〃)
TortoiseGit 入门指南03:提交,Git,git,TortoiseGit文章来源地址https://www.toymoban.com/news/detail-541312.html

到了这里,关于TortoiseGit 入门指南03:提交的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TortoiseGit 入门指南12:创建标签

    前面的文章不止一次的提到过 标签 (Tag),我们在《TortoiseGit 入门指南08:浏览引用以及在引用间切换》一文中知道, 标签 是一种 引用 ,用于标记特定提交点,代表了一个项目的特定版本或里程碑。还可以理解为标签就是某次提交的别名,标签的最重要应用是 标记程序的

    2024年02月16日
    浏览(26)
  • TortoiseGit 入门指南14:比较差异

    版本控制系统最常见的应用是 查看发生了哪些变化 。通过比较代码之间的差异,你可以清楚地了解到代码的改动情况。这在代码审查、团队协作、版本控制等方面都非常有用。 代码审查:通过比较代码的差异,可以更方便地进行代码审查。你可以清晰地看到新增、修改和删

    2024年02月04日
    浏览(27)
  • Git入门指南(手把手教学)

    Git是一种分布式版本控制系统,它是由Linus Torvalds为了管理Linux内核开发而开发的。与中心化的版本控制系统(如SVN)不同,Git是一种分布式系统,它将代码库(repository)复制到多个开发者的本地计算机上,每个开发者都有自己的代码库,可以在本地提交代码、管理分支、合

    2023年04月14日
    浏览(20)
  • TortoiseGit 入门指南17:使用子模块

    子模块( submodule )是一种将一个 Git 仓库作为另一个 Git 仓库的子目录进行管理的方法。它允许你将一个 Git 仓库嵌套到另一个仓库中,并保持提交的独立。 这对于管理依赖关系和共享代码非常有用。比如我有一个模块库 common ,里面有一些所有项目都可能会用到的模块,这

    2024年02月03日
    浏览(15)
  • TortoiseGit 入门指南11:还原与重置

    Git 就像个时光机器,能让我们还原到任何提交。 假如我们在查看一个干净的代码仓库,干净意味着工作区中的文件保持着最后一次提交的状态,没有修改。在查看的过程中,我们有意或无意的修改了工作区中的文件,之后我们想把这些文件恢复成查看前的样子。像这样 要还

    2024年02月16日
    浏览(12)
  • TortoiseGit 入门指南02:创建和克隆仓库

    本节讲解如何使用 TortoiseGit 创建和克隆仓库。但在此之前,我们先来看下 TortoiseGit 软件的一个特色:图标。 TortoiseGit 会给 工作区 中的文件和文件夹叠加图标( Icon Overlays ),图标反应的是这些文件和文件夹的当前状态。目前,共 9 种图标。 按照图中数字标出的顺序,其含

    2024年02月13日
    浏览(17)
  • Git入门使用到远程仓库全指南

    本文是面向零基础者的Git入门教程,内容较为基础简单,主要来源于各种资料整合以及个人使用经验,仅作基本了解性介绍。内容基本涵盖Git常用操作,以各种命令为中心,逐一解释其用法和注意事项。另附在VScode利用其辅助功能使用Git的介绍。 Git是一个开源的分布式版本控

    2024年02月04日
    浏览(13)
  • 【掌握版本控制:Git 入门与实践指南】多人协作

                                                      🎬慕斯主页 : 修仙—别有洞天                                               ♈️ 今日夜电波: 泥中に咲く—ウォルピスカーター                                                      

    2024年03月16日
    浏览(18)
  • 从入门到精通:Git版本控制系统完全指南

    💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 Git是一个强大的版本控制系统,它可以帮助开发者轻松地管理代码版本、协作开

    2023年04月09日
    浏览(11)
  • 【掌握版本控制:Git 入门与实践指南】远程操作|标签管理

                                                      🎬慕斯主页 : 修仙—别有洞天                                               ♈️ 今日夜电波: 泥中に咲く—ウォルピスカーター                                                      

    2024年03月17日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包