gpt4 book ai didi

git - Git 中是否有一个文件的先前版本的简写?

转载 作者:太空狗 更新时间:2023-10-29 13:15:57 24 4
gpt4 key购买 nike

我想要的是 -
git checkout FHEAD~ path/filename

我目前所做的是通过 -
查找文件的先前版本 git log -1 --skip=1 path/filename

然后,
git checkout <previous-commit-hash> path/filename

最佳答案

检索文件先前版本的别名的简单示例。

这里的技巧是使用 --format 格式化日志输出以仅返回提交哈希

[alias]
prev = "!f(){ git checkout $(git log -1 --format="%H" --skip=1 -- ${GIT_PREFIX:-.}/$1) -- ${GIT_PREFIX:-.}/$1; git reset ${GIT_PREFIX:-}/$1; }; f"

使用 git log -1 可确保 git prev 始终返回直接父文件。选择下一个 parent 可能会更复杂。

另请注意,文件一旦 checkout ,就会立即添加到索引中。它不会 merge 到您现有的副本中,并且不会警告覆盖本地更改。我调用了 git-reset 以确保 checkout 文件仅位于工作目录中,而不是索引中。

GIT_PREFIX 的使用允许您输入相对路径,尽管只有相对较新版本的 git 支持 GIT_PREFIX。

编辑..

同样的事情使用 git rev-list.. 一个非常强大的 git 命令,设计用于在编写脚本和自动化时遍历 git 祖先图...

[alias]
prev = "!f(){ git checkout $(git rev-list --max-count=1 --skip=1 HEAD -- ${GIT_PREFIX:-.}/$1) -- ${GIT_PREFIX:-.}/$1; git reset ${GIT_PREFIX:-}/$1; }; f"

关于git - Git 中是否有一个文件的先前版本的简写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26404448/

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