如果我运行gitbranch-d XYZ,是否有方法恢复该分支?有没有办法像我没有运行delete branch命令一样返回?
当前回答
第一种类型
git reflog
在终端中。
之后,获取HEAD@{**number**}(例如HEAD@{12})。
现在输入:
git checkout -b 'branch_name' 'HEAD@{22}'
其他回答
恢复已删除分支的一般问题的一个非常常见的子问题是在合并后恢复功能分支,然后删除它,这是常见的做法。
由于这篇SO文章涵盖了,如果已成功合并,您始终可以恢复已删除的分支。这是因为分支只是一个指向提交的花哨指针,因为您已经合并,所以提交仍然存在。合并提交将列出合并的两个(或多个)分支的头部提交的哈希值。例如:
git show master
commit 849675951d41497e7b07d34096ebf36dc713221 (HEAD -> master)
Merge: fc1c9ce 97f8a60
Author: Me
Date: Sun Jan 9 16:14:24 2022 +0100
Merge branch 'feature'
因此,您可以通过执行git checkout-b feature97f8a60来恢复delete“feature”分支,无需任何reflog内容。
如果您想使用GUI,可以使用gitk执行整个操作。
gitk --reflog
这将允许您查看分支的提交历史,就像该分支未被删除一样。现在只需右键单击分支的最近提交,然后选择菜单选项“创建新分支”。
要恢复已删除的分支,请首先查看reflog历史记录,
git reflog -n 60
其中n表示最后n次提交。然后找到合适的头部并用该头部创建一个分支。
git branch testbranch HEAD@{30}
如果您使用的是Git扩展
虽然很旧,但当您在google恢复已删除的分支时,此线程是列表的顶部。我使用的是git扩展而不是命令行,所以我不熟悉这些命令,但reflog命令给了我一个线索,所以我在这里发布了我的git扩展解决方案,供其他使用git扩展的人阅读。
转到工具栏上的视图下拉列表选择Show reflog references
您删除的分支现在应该可以查看和选择,只需单击它并将其签出即可。
如果删除了分支并忘记了它的提交id,可以执行以下命令:
git log --graph --decorate $(git rev-list -g --all)
之后,您将能够看到所有提交。然后,您可以对这个id执行git签出,并在这个提交下创建一个新的分支。
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?
- 如何移除SSH密钥?