如果我运行gitbranch-d XYZ,是否有方法恢复该分支?有没有办法像我没有运行delete branch命令一样返回?
当前回答
首先转到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>
如果您没有reflog,例如,因为您正在一个未启用reflog的裸存储库中工作,并且您要恢复的提交是最近创建的,另一个选项是查找最近创建的提交对象并查看它们。
在.git/objects目录内运行:
find . -ctime -12h -type f | sed 's/[./]//g' | git cat-file --batch-check | grep commit
这将查找在过去12小时内创建的所有对象(提交、文件、标记等),并对其进行筛选以仅显示提交。检查这些是一个快速的过程。
不过,我会先尝试Jakub的回答中提到的git-request.sh脚本。
谢谢大家。
我的问题是我删除了GitLab(远程)和GIT(本地)上的分支。
但不知怎么的,我得到了我的承诺,就像这样:
首先,我得到了最后一次提交(SHA)
git log --graph --decorate $(git rev-list -g --all)
我简单地签出了上一个SHA
git checkout <SHA>
然后我通过键入
git switch -c <branch-name>
然后我拿回了我的承诺我又把树枝推了一遍
谢天谢地。
ps:不知为什么(SHA)是一个提交代码
要恢复已删除的分支,请首先查看reflog历史记录,
git reflog -n 60
其中n表示最后n次提交。然后找到合适的头部并用该头部创建一个分支。
git branch testbranch HEAD@{30}
我使用以下命令来查找和检索已删除的分支。第一步来自gcb的描述。
$ git fsck --full --no-reflogs --unreachable --lost-found > lost
$ cat lost | cut -d\ -f3 > commits
$ cat commits | xargs -n 1 git log -n 1 --pretty=oneline
现在根据提交注释查找gitcommit-id(git-SHA),并在下面的命令中使用它。使用之前找到的GIT-SHA签出一个名为new-branch的新分支:
$ git checkout -b NEW-BRANCH GIT-SHA
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 在GitHub上有一个公共回购的私人分支?
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式