git - 如何检查自上次在 git 的主分支中提交以来文件夹或子文件夹是否已被修改?
问题描述
我的 git repo 有多个文件夹。一个独特的要求需要检查是否有任何文件夹已被更新/修改,如果是,那么做其他事情吗?git 中有没有办法检查自上次提交(主要)以来是否有任何文件夹或其内容被修改?建议?
解决方案
Git 不存储 文件夹:Git 只存储文件,将它们保存在提交中——所以它实际上只是存储提交,然后再存储文件。文件的名称可能类似于path/to/file
. 这不是一个名为的文件夹,其中path
包含一个名为的文件夹,该文件夹to
包含一个名为file
. 它只是一个名为path/to/file
. (这个奇怪的存储系统是 Git 的index的产物,它不能保存文件夹,只能保存文件。有一些技巧可以工作,使用子模块来伪造东西,这将允许你说服 Git 创建一个空文件夹. 但一般Git只存储commits-that-store-files.提取时提交的文件归档——每个提交就像tgz
这些文件的完整归档——Git 知道你的操作系统需要文件夹,并会根据需要创建它们。)
除此之外:让 Git 将某些提交的存储内容与某些文件集进行比较很容易。执行此操作的最面向用户的 Git 命令是git diff
. 该命令可以:
- 比较存储库中的两个提交;
- 将一个提交与您在存储库中的工作树中的内容进行比较;
- 将一个提交与 Git索引中的内容进行比较;
- 将一个提交与独立文件夹(不是任何工作树的一部分)中的一组文件进行比较;
- 比较两个完全在 Git 之外的独立文件夹;
以及更多的操作。有关完整的详细信息,请参阅git diff
文档。
diff 操作可以这样描述:
- 将一个文件或一组文件放在屏幕左侧。
- 将另一个文件或一组文件放在右侧。
- 玩找不同的游戏:描述如何修改左侧图像以使其与右侧图像匹配。
要使用出现在此处命名为左侧的git diff
某个分支上的最新提交,只需使用名称作为第一个(即左侧)并且可能只使用提交说明符。一般来说,您可能希望在此处使用,这样它不会向您展示如何更改每个文件,而只是说明每个文件是否已更改,或者是否添加或删除了某些文件。B
B
git diff --name-status
由于 Git 仅在此级别处理文件,因此如果您希望以某种方式合并输出,则由您决定将其path/to/file
转换为您想要的任何文件夹名称(path
或)。path/to
git diff
推荐阅读
- python - 通过 pyodbc 将 Python 连接到 FileMaker。获取架构不匹配错误。有什么建议吗?
- docker - Docker Compose 入口点文件
- python - 在构建 python / cython 扩展时指定替代链接器?
- c# - c# OData V4,EntityFramework 6,缺少属性
- excel - VBA 超链接。添加到同一工作表中的另一个单元格
- java - 如何销毁当前活动并触发要停止的基础数据库 addEventListener?
- vb.net - ConextMenuStrip 仅在快捷键上返回 Null
- c++ - 如何将头部的指针传递给 main.cpp 中的函数
- android - 动态替换Android中的@string/stringId
- canvas - 使用画布绘制网格