【问题标题】:How can I annotate a deleted file in git?如何在 git 中注释已删除的文件?
【发布时间】:2015-12-01 02:31:14
【问题描述】:

我想使用以下命令对 git 存储库中的文件进行注释/归咎于修订:

git annotate [options] file [revision]

但是,该文件不再存在于当前存储库中,但我知道该文件存在于修订版 f80133a 中。

git annotate java/org/apache/catalina/valves/CometConnectionManagerValve.java f80133a
fatal: cannot stat path 'java/org/apache/catalina/valves/CometConnectionManagerValve.java': No such file or directory

在这种情况下,有没有简单的方法来注释已删除的文件而不检查修订版 f80133a?

【问题讨论】:

  • 出于好奇——为什么?
  • 实际上,我正在跟踪存储库中曾经存在的所有源文件。修订版 f80133a 修复了文件的一个错误,我想知道作者和更改。还有更多类似的情况,我想自动制作。 @MattBall

标签: git annotate


【解决方案1】:
git stash                # if you have pending changes
git checkout f80133a
git annotate java/org/apache/catalina/valves/CometConnectionManagerValve.java > annotation.txt
git checkout master      # or develop, or wherever you were
git stash pop            # if stashed

OP 编辑​​后编辑:不签出,我不这么认为,但我可能错了。

EDIT2:我错了。你也可以欺骗 git:

touch java/org/apache/catalina/valves/CometConnectionManagerValve.java
git annotate java/org/apache/catalina/valves/CometConnectionManagerValve.java f80133a
rm java/org/apache/catalina/valves/CometConnectionManagerValve.java

【讨论】:

  • 谢谢!!阿马丹。因为我有太多这样的案例,检查每个案例的修订成本太高。但是,这将是我最后的解决方案。我只是想知道是否有更好的方法。谢谢!!
  • 真的吗?你的 EDIT2 有效吗?我会试试的,这很有趣!
  • 天啊!真的行!!这真的很聪明:-)。谢谢阿马丹。
【解决方案2】:

例如,您可以签出该提交以查看责任

git checkout f80133a

在此之后,您将以分离的头部状态到达该提交 然后责备

git annotate [options] file 

一旦你完成了

git checkout your_prev_branch_name

【讨论】:

  • 是的,这是一个解决方案。但是,我想追溯存储库中的所有文件,这可能成本太高。如果没有更好的解决方案,我想我会采用这个。谢谢!
  • 在这种情况下,您可以在 ref 上结帐后使用一些 gui 工具
猜你喜欢
  • 2017-04-27
  • 2012-07-09
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 2013-06-03
  • 2016-02-02
相关资源
最近更新 更多