如何在GIT中标记单个文件

pic*_*e 涅 12 git version-control git-svn

我对git很新.我目前正试图熟悉它,通过使用它来跟踪我正在维护的一些excel文件中的更改,以跟踪我参与的一些连续活动.所有文件都在一个存储库中.我想用它们的版本分别标记每个文件.这可能吗?到目前为止,我发现了标记整个存储库的功能.如果我想做的是错的,请告诉我最佳做法.

提前致谢.

编辑

当我这样做的时候,我故意删除了一个先前的标签,使整个存储库被标记为(因为我没有找到标记单个文件的方法)为v1.0.由于我现在想要使用文件名重置标记的名称并且对事情的发生方式非常满意,如何回滚删除并重命名以前的标记(已删除的标记)?

Rud*_*udi 8

从技术上讲,您可以在没有文件名的情况下标记单个文件的内容.但是这种标签的用途有限.标记预计指向提交,而非提交的特殊标记具有非常不同的行为(您不能git checkout这样的特殊标记).所以我强烈建议永远不要使用非提交标签.

当你只想要标记一些文件时,最好为它们使用单​​独的repo,或者至少使用不同的分支,因为git总是查看完整的树以进行操作.

如果您仍然坚持要创建这样一个特殊标签,您可以:

> git ls-tree HEAD
040000 tree 2c186ad49fa24695512df5e41cb5e6f2d33c119b    bar
100644 blob 409940768f2a684935a7d15a29f96e82c487f439    foo.txt

> git tag my-bar-tree 2c186ad49fa24695512df5e41cb5e6f2d33c119b
> git tag my-foo-file 409940768f2a684935a7d15a29f96e82c487f439
Run Code Online (Sandbox Code Playgroud)


ral*_*nja 7

您只能标记提交,例如存储库历史记录中的某个快照.但是,git将文件存储为blob,你可以做的是使用git notes为blob添加注释,如下所示:

$ git ls-tree HEAD
100644 blob 252f7c7df5bd181536a6c9d0f9c371ce1a5dd042    .gitignore
100644 blob 8150ada74aba86c983ac3f8f63ab26aaa76fdcb7    README
100644 blob c4b1ff6dcb2a8e50727df21ced8d2872cd91af79    TODO.txt

$ git notes add -m "Adding a note to TODO" c4b1ff6dcb2a8e507
$ git notes show c4b1ff6dcb2a8e507
Adding a note to TODO
Run Code Online (Sandbox Code Playgroud)

但请注意,此注释(没有双关语:))仅附加到此blob,因此每当文件更改时,将创建新的blob(使用另一个sha1哈希值),并且新blob将不具有此注释.


Mat*_*ley 4

标签放置在特定的提交上,而不是像您在问题中建议的那样放置在整个存储库上。

执行您建议的操作的一种方法是确保每次提交时仅将更改提交到单个文件,然后您可以使用例如标记该提交。file1-v1.0代表 file1 的 v1.0。

你想通过标记这些提交来代表什么?这将影响有关如何改进流程的任何建议。