你能用Git标记单个文件夹/文件吗?

你能用Git标记单个文件夹/文件吗?,git,github,tags,Git,Github,Tags,我有一份叫做“图书馆”的回购协议。此repo包含我的项目的多个相对独立的库文件(例如数学、显示等)。当时,创建单个repo似乎比为每个库文件创建repo更容易 但是,我现在遇到了标记这些文件的问题。Git中的标记本质上是对整个repo进行标记,这将给我留下一个单一的repo库版本。但是,我对单独标记文件感兴趣,以便其他项目可以引用特定版本(例如math 1.0、display 1.1等) 是否唯一的解决方案是将每个文件拆分为自己的回购协议,这样每个文件都可以用特定版本进行标记?然而,对每个文件进

我有一份叫做“图书馆”的回购协议。此repo包含我的项目的多个相对独立的库文件(例如数学、显示等)。当时,创建单个repo似乎比为每个库文件创建repo更容易

但是,我现在遇到了标记这些文件的问题。Git中的标记本质上是对整个repo进行标记,这将给我留下一个单一的repo库版本。但是,我对单独标记文件感兴趣,以便其他项目可以引用特定版本(例如math 1.0、display 1.1等)


是否唯一的解决方案是将每个文件拆分为自己的回购协议,这样每个文件都可以用特定版本进行标记?然而,对每个文件进行回购似乎是浪费;佩尔博士:你可以,但你可能不应该 对于您的用例:我将坚持标记提交

见我对另一个问题的回答:

如果您命名您的标签:

module1/1.0.0
module1/1.1.0
...
module2/1.0.0
module2/1.0.1
...
您可以轻松列出并排序针对单个模块的标记:

# list tags for module1 :
$ git tag --list 'module1/*'

# list tags and sort them as version numbers
# (e.g : display '1.10' after '1.9', not between '1.1' and '1.2') :
$ git tag --list 'module1/*' --sort="version:refname" 
此外,如果标记的名称可以轻松映射repo中的目录结构,则可以编写针对单个模块的代码和标记的命令:

# list tags for module1 :
$ git tag --list 'module1/*'

# list tags and sort them as version numbers
# (e.g : display '1.10' after '1.9', not between '1.1' and '1.2') :
$ git tag --list 'module1/*' --sort="version:refname" 
假设
module1
的代码位于
src/module1/
中,
module2
的代码位于
src/module2/
中,
business/module3
的代码位于
src/business/module3/
中。。。您可以编写如下脚本(或函数):

您将获得目标模块的历史记录,仅使用与此模块相关的标记进行修饰


使用额外的脚本fu,您可以传递任何额外的选项,以
git-log

标记单个文件并不是git的工作方式。。。我真的不知道如何做你想做的,除了让每个需要标签的单位都有自己的回购协议,我知道这是你试图避免的。这回答了你的问题吗?和往常一样,我从你的回答中学到了很多。和往常一样,这可能得益于顶部的“tl;dr”。)我在想“tl;dr:你可以,但也许你不应该。”嘿。我想明确地说:从技术上讲,你可以标记一个文件或目录,但你无法提取诸如“这个对象的历史是什么?上次修改它是什么时候?”之类的信息,git只存储提交(不适用于单个文件或目录)