gpt4 book ai didi

Git:恢复已删除的(远程)分支

转载 作者:IT王子 更新时间:2023-10-29 01:25:56 24 4
gpt4 key购买 nike

我需要恢复在推送过程中以某种方式删除的两个 Git 分支。

这两个分支是在不同的系统上创建的,然后推送到我的“共享”(github) 存储库。

在我的系统上,我(显然)在获取期间检索了分支:

~/myfolder> git fetch
remote: Counting objects: 105, done.
remote: Compressing objects: 100% (58/58), done.
remote: Total 62 (delta 29), reused 0 (delta 0)
Unpacking objects: 100% (62/62), done.
From github.com:mygiturl
* [new branch] contact_page -> origin/contact_page
731d1bb..e8b68cc homepage -> origin/homepage
* [new branch] new_pictures -> origin/new_pictures

在那之后我做了一个推送,将我的本地更改发送到中央仓库。出于某种原因,这些分支已从我的本地系统和中央仓库中删除:

~/myfolder> git push
Counting objects: 71, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (43/43), done.
Writing objects: 100% (49/49), 4.99 KiB, done.
Total 49 (delta 33), reused 0 (delta 0)
To git@github.com:mygiturl.git
- [deleted] contact_page
+ e8b68cc...731d1bb homepage -> homepage (forced update)
bb7e9f2..e0d061c master -> master
- [deleted] new_pictures
e38ac2e..bb7e9f2 origin/HEAD -> origin/HEAD
731d1bb..e8b68cc origin/homepage -> origin/homepage
e38ac2e..bb7e9f2 origin/master -> origin/master
* [new branch] origin/contact_page -> origin/contact_page
* [new branch] origin/new_pictures -> origin/new_pictures

从他们的出生地机器上取下分支并不是一件容易的事,所以如果可能的话,我想尝试从我的本地机器上恢复它们​​。

我在谷歌上搜索过的所有 git“撤消”信息都与恢复丢失的提交有关。我认为这不适用于此处,因为我没有这些分支的提交 UID。

我想知道如何取回这些。我还想知道它们最初是如何被删除的,以及我将来如何避免这种情况。

编辑:根据要求,这是我的 repo 配置

user.name=Craig Walker
user.email=github@softcraft.ca
alias.unadd=reset HEAD
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=git@github.com:MyGitURL.git
remote.origin.mirror=true
branch.master.remote=origin
branch.master.merge=refs/heads/master
alias.undo=reset --hard
alias.test=push -f ci HEAD:master
alias.st=status
alias.ci=commit
alias.br=branch
alias.co=checkout
alias.ch=checkout
alias.df=diff
alias.lg=log -p
alias.who=shortlog -s --
remote.ci.url=ContinuousIntegrationGitURL
remote.ci.fetch=+refs/heads/*:refs/remotes/ci/*
branch.photo.remote=origin
branch.photo.merge=refs/heads/photos
remote.foo.url=FooGitURL
remote.foo.fetch=+refs/heads/*:refs/remotes/cynthia/*
branch.homepage.remote=origin
branch.homepage.merge=refs/heads/homepage

最佳答案

我不是专家。不过你可以试试

git fsck --full --no-reflogs | grep commit

找到已删除分支的 HEAD 提交并取回它们。

关于Git:恢复已删除的(远程)分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1992364/

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