gpt4 book ai didi

git - 在 git 中,您可以查看文件移动后应用于文件的旧提交吗?

转载 作者:IT王子 更新时间:2023-10-29 01:28:51 27 4
gpt4 key购买 nike

我在 git 中移动文件后(使用 git mv),查看该文件的日志只显示包括移动在内的提交和移动之后的提交。

有什么方法可以查看旧名称下应用于文件的提交吗?在下面的示例中,我希望在完成移动后在 git log 中看到提交 b04033bdc44f1 和 8ca40d563ce5d。

 $ git init
Initialized empty Git repository in /Users/ben/code/git_mv_example/.git/
$ touch foo
$ git add foo
$ git commit -m "Initial commit"
Created initial commit 8ca40d5: Initial commit
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo
[master*]$ echo "abcdefg" > foo
[master*]$ git commit -a -m "edited foo"
Created commit b04033b: edited foo
1 files changed, 1 insertions(+), 0 deletions(-)
$ git log foo
commit b04033bdc44f1eb3477270b4b7ca727377d8c03a
Author: Ben Brinckerhoff <ben@devver.net>
Date: Tue Jun 2 13:26:53 2009 -0600

edited foo

commit 8ca40d563ce5d07d965bfb75a01b9c23378fd321
Author: Ben Brinckerhoff <ben@devver.net>
Date: Tue Jun 2 13:26:15 2009 -0600

Initial commit
$ git mv foo bar
[master+]$ git commit -a -m "renamed foo to bar"
Created commit 2bccdf6: renamed foo to bar
1 files changed, 0 insertions(+), 0 deletions(-)
rename foo => bar (100%)
$ git log bar
commit 2bccdf6fc65b9da5b279d9f1117e436549dd3a7b
Author: Ben Brinckerhoff <ben@devver.net>
Date: Tue Jun 2 13:27:14 2009 -0600

renamed foo to bar
$ git log foo
fatal: ambiguous argument 'foo': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

这不可能吗?或者 git log 是错误的命令吗?

最佳答案

'git-log -M' 将提供带有重命名信息的提交历史记录,如前所述 in GitFaq "Why does git not "track" renames ?"

Git 中的 diff 机制支持自动检测重命名,这是通过 '-M' 切换到 git-diff-* 命令系列。
重命名检测机器被git-log使用和 git-whatchanged .
Git 还支持一种有限形式的跨重命名 merge 。分配责任的两个工具,git-blamegit-annotate两者都使用自动重命名检测代码来跟踪重命名。

作为一个非常特殊的案例,'git log' 1.5.3 版及更高版本具有“--follow”选项,允许您在给定单个路径时跟随重命名


在你的例子中:

F:\prog\git\test\rename>git log --follow bar
commit 81f52b91eb2fc7ad18051c93f3e4d583f27c15ca
Author: VonC <>
Date: Tue Jun 2 21:54:43 2009 +0200

renamed foo to bar

commit 71aff26ace6ab249ab2042d1e5d20377486ce478
Author: VonC <>
Date: Tue Jun 2 21:54:19 2009 +0200

edited foo

commit c893199da767eddac6a547b940557435ade4d18c
Author: VonC <>
Date: Tue Jun 2 21:53:51 2009 +0200

initial commit

注意:所有这些都是可能的,因为在重命名为 bar 之前,您没有彻底修改 foo 的内容。如果内容完全不同,--follow 选项将无法获取所有历史记录。

关于git - 在 git 中,您可以查看文件移动后应用于文件的旧提交吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/941466/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com