ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

在 tortoisegit 执行 commit 会跳过暂存区直接提交到仓库中吗?

2020-08-31 16:32:01  阅读:392  来源: 互联网

标签:exe tortoisegit 暂存区 提交 git commit


在 tortoisegit 执行 commit 会跳过暂存区直接提交到仓库中吗?

原调试debug排错troubleshootprocess monitorsysinternalsautoruns

缘起

之前与同事交流 git 时,简单介绍了 git shelltortoisegit (戏称 小乌龟tortoisesvn 操作极其相似)。

tortoisegit 的命令基本上与 git bash 中的命令一一对应。在 git bash 中提交变更到本地仓库需要先 git add 添加到暂存区,再通过 git commit 命令提交到仓库,但是在 tortoisegit 中可以使用 commit 命令 ”直接“ 提交到仓库。到底会不会经过暂存区呢? 我的理解是:会先添加到暂存区,然后再提交到仓库。到底是不是这样的呢?还是通过实验来观察。

小知识

默认,tortoisegit 会尽量使用 libgit2 来实现一系列的 git 操作。但是 libgit2 还有一些功能没实现,我想这就是为什么我们在安装 tortoisegit 的时候,会要求我们指定 git bash 的路径。

tortoisegit 配置
tortoisegit 配置

如果我们不希望使用 libgit2 而是完全使用 git.exe 来实现底层操作,我们可以在 tortoisegit 中禁用 UseLibgit2

禁用 UseLibgit2
禁用 UseLibgit2

关于 tortoisegit 的各项设置请参考 tortoisegit 官方手册

验证

做好设置后,我们可以开始验证了。

使用 process monitor 追踪 tortoisegit 的整个提交过程。查看执行了哪些 git 命令。

具体过程请参考下面的屏幕录像。

tortoise commit 执行过程
tortoise commit 执行过程

关键调用截图如下:

git-commit-command-details
git-commit-command-details

我们主要关注的是如下两条命令:

git.exe update-index -- "a"

git.exe commit -F "C:\Users\BCN\AppData\Local\Temp\TortoiseGit\Pat2E66.tmp"

其中,git update-index -- "a"git add -- "a" 效果一样,都是把 文件 a 添加到暂存区。

git commit -F 表示提交,而且从文件中提取提交信息。

看来 ,在 tortoisegit 中提交的时候,也需要经过暂存区。

为什么每个指令都执行了两遍呢?我猜是因为 C:\Program Files\Git\bin\git.exe 不做实际工作。把工作都转交给相应的进程。我机器上是 C:\Program Files\Git\mingw64\bin\git.exe

参考资料

https://git-scm.com/docs/git-update-index

https://stackoverflow.com/questions/38585812/what-is-the-difference-between-git-add-and-git-update-index

标签:exe,tortoisegit,暂存区,提交,git,commit
来源: https://www.cnblogs.com/bianchengnan/p/13590244.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有