如果我运行gitbranch-d XYZ,是否有方法恢复该分支?有没有办法像我没有运行delete branch命令一样返回?
当前回答
确保在本地执行所有这些操作,并在推送到Bitbucket云之前确认您的回购处于所需状态。克隆当前的回购协议,并首先测试这些解决方案可能也是一个好主意。
如果您刚刚删除了分支,您将在终端中看到类似的内容:
Deleted branch <your-branch> (was <sha>)
2.要恢复分支,请使用:
git checkout -b <branch> <sha>
如果你不知道头顶上的“sha”,你可以:
使用以下方法在已删除分支的末端查找提交的“sha”:
git reflog
要恢复分支,请使用:
git checkout -b <branch> <sha>
如果您的提交不在reflog中:
您可以尝试通过使用以下命令将分支重新设置为提交的sha来恢复分支:
git fsck --full --no-reflogs --unreachable --lost-found | grep commit | cut -d\ -f3 | xargs -n 1 git log -n 1 --pretty=oneline > .git/lost-found.txt
2.然后可以使用以下选项之一显示每个提交:
git log -p <commit>
git cat-file -p <commit>
其他回答
如果您正在使用VSCode。。。并且你在删除分支之前的某个时间点将其与服务器同步。。。
注意,gitbranchdelete只删除本地副本,而不是服务器上的副本。首先,在Git面板(左侧工具栏上的Git图标)中,查看分支,看看分支是否仍在“origin/your_branch_name”下。如果是这样的话,只需选择它,您就可以取回代码(建议您立即在其他地方复制/粘贴/保存代码)。
如果没有看到“origin/your_branch_name”,请安装GitLens扩展。这允许您在服务器存储库中直观地四处查看,并找到同步到服务器的副本。如果您有多个存储库,请注意,为了使存储库显示在GitLens中,可能需要从所需的存储库中至少打开一个文件。然后:
打开GitLens面板扩展存储库您应该看到类别列表:分支/参与者/远程/Stashes等
您应该在“Branches”或“Remotes->Origins”下找到YourLostTreasure。希望您会看到一个具有所需名称的分支-如果展开它,您应该会看到在该分支中更改的文件。双击文件名以打开它们,然后立即备份该代码。
如果你没有立即看到你丢失的分支,四处看看,如果你发现了有希望的东西,立即打开它并获取代码。我不得不四处寻找,直到找到TheGoldenBranch,但即便如此,代码还是丢失了最后一次或两次保存(可能是因为我在尝试a-Branch-Merge-buncy-incidentaly-clicking-Branch-Delete之前未能同步到服务器)。我的搜索被不必要地拉长了,因为当我第一次找到分支时,我并不完全确定名称是否正确,所以一直在寻找,花了一些时间才重新找到第一个分支。(因此,将卡普姆(Carpum),然后继续寻找。)
首先转到git批处理项目,如:
cd android studio project
cd Myproject
then type :
git reflog
你们都有一个更改列表,参考号取参考号,然后从android studio或git betcha结账。另一个解决方案是获取参考号,然后转到android工作室,单击git分支,然后单击签出标签或参考号之后的修订,然后lol您就有了分支。
是的,您应该能够执行git reflog(无缩写),并在已删除分支的顶端找到提交的SHA1,然后只需git checkout[sha]。一旦您完成了提交,就可以使用gitcheckout-b[branchname]从那里重新创建分支。
感谢@Cascabel的这款浓缩/单内胆版本,以及@Snowscrash如何获得sha。
如果你刚刚删除了分支,你会在你的终端中看到类似这样的内容:deleted branch<your branch>(was<sha>)。然后在这一行中使用<sha>:
git checkout -b <your-branch> <sha>
最热门的解决方案实际上比要求的要多:
git checkout <sha>
git checkout -b <branch>
or
git checkout -b <branch> <sha>
将您移动到新的分支,以及您可能忘记提交的所有最近更改。这可能不是你的意图,尤其是在失去分支后处于“恐慌模式”时。
一个更干净(更简单)的解决方案似乎是一行(在使用git-relog找到<sha>之后):
git branch <branch> <sha>
现在,当前分支和未提交的更改都不受影响。相反,只会创建一个新分支,直到<sha>。
如果这不是提示,它仍然有效,并且您得到了一个较短的分支,那么您可以使用新的<sha>和新的分支名称重试,直到正确为止。
最后,您可以将成功恢复的分支重命名为其名称或其他名称:
git branch -m <restored branch> <final branch>
不用说,成功的关键是找到正确的承诺<sha>,所以明智地命名你的承诺:)
如果删除了分支并忘记了它的提交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密钥?