git - 如何知道之前 checkout 的标签

标签 git revert git-revert

在标签列表中喜欢

v001
v002
v003
v004
v005

我通过 git fetch --tagsgit checkout v006 提取了新标签让我们说 v006

我错误地没有注意到在这次新 checkout 之前 checkout 了哪个版本(git describe --tags)。似乎有错误,我必须恢复到旧标签。我怎么知道使用了哪个标签?

最佳答案

HEAD reflog 记录每个成功的 checkout 以及文本“从(点 A)移动到(点 B)”,例如:

$ git reflog
676699a HEAD@{0}: checkout: moving from
        695326c489285ed5678ac04d58289bcb24019bb9 to tag2
695326c HEAD@{1}: checkout: moving from master to tag1

在这种情况下,我从 master 开始,然后执行 git checkout tag,然后执行 git checkout tag2。 (注意:我稍微编辑了输出以使其更适合发布。如果您将 git 设置为通过“less”进行管道传输,您可能需要在窗口中向左/向右滚动才能看到所有内容。)

第一行输出(我把它包裹起来,所以它是第三个引用行)有一个原始的 SHA-1,因为当你检查一个不是分支的引用时(或者,当你使用 --detach 带有一个分支)你会得到一个“分离的 HEAD”,其中 HEAD 文件记录了一个原始提交 SHA-1。但是,我们可以从下一行中看出 695326c489285ed5678ac04d58289bcb24019bb9 是标签 tag1 的 SHA-1。


注意:你说“似乎有错误,我必须恢复到旧标签”,并引用(通过 Stack Overflow 标签)git-revert。然而,这些类型的 git checkout(通过标签或 SHA-1)是关于查看一些其他版本(即,将特定版本放入您的工作目录)。 git revert 命令是关于添加一个 提交,其作用是撤消一些 提交。

一般来说,如果您“在一个分支上”,您只想git revert(例如,git checkout mastergit checkout develop 或其他一些分支名称),并且您发现有人向该分支提交了不正确的代码,并且需要“反向应用”他们之前的更改并进行新的提交(然后您可能会发布, git push 或提出 pull 请求)。因此,当您一直在查看旧版本时,回到“还原”似乎很奇怪。

关于git - 如何知道之前 checkout 的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21935216/

相关文章:

git - 如何从github历史记录中的文件中删除敏感数据

c++ - if..else.. 语句未输出预期结果。 while..循环问题?

git - 转到上一个提交,进行更改并作为新头提交

git - 如何撤消对特定文件的本地更改

git - 如何修复错误 merge 中的历史记录

git 错误 : "The remote end hung up unexpectedly, invalid characters in (..path..)"

git - 从 Git 远程 pull 时使用远程更改解决冲突

git - 如何 Git 忽略这些文件

git - BitBucket 使用 Cron Job 自动 pull

git revert HEAD 正在打开 nano 编辑器。我怎样才能避免这种情况?