请教 git 里怎么删除记录
请大佬指点:
分支情况如下图:
从 1 创建新的 test 分支
在 test 分支上分别进行了 2 3 提交
merge test to release 的时候产生了 4提交
删除了 test 分支
我现在想回退到 2来删除 3 4记录,是否能做到?如果可以的话,应该在哪个分支执行什么 git 命令。
AI 让我执行了 git reflog expire --expire-unreachable=now --expire=now --all,现在git reflog 被清空了,这个问题算是 “解决了”😂
git reflog 查看记录
git reset 重置当前状态
去看 git rebase 的文档
git reset --hard 2 的 commit id
这种问题可以直接问 AI
AI 大概会问你你到底想干什么
#2
git rebase 可以把 release 上从 4 回退到 1 ,但是由于我删除了 test 分支,所以不知道怎么删除 3
前提:只有你一个人,或者,你可以说动协作开发的其他成员进行强制拉取。
首先,请保持工作区干净
即:git status
提示当前无修改
步骤一
向前软重置一步。重复执行,直到退到记录 1
git reset --soft HEAD^1
或者是直接一步到位退到记录 1
git reset --soft ${记录 1 的 commit id}
步骤二
提交当前工作区
git commit ${可以填写记录 2 的提交信息,也可以顺带标注一下回退原因}
步骤三
强制 push ,覆盖远端
git push --force
步骤四
如果有协作开发的同学,揖让让他们拉一下新的远端再接着开发。
这个前提只针对 test 分支。也就是如果只有你一个人在 test 分支,就无所谓。
#4
问了 claudeI have a git branch named
release`.
I create a new branch test
from commit1
, then create commit2
and commit3
.
Then back to release
, merge test
to release
with a new commit4
.
Then deleted the test
branch.
Now I wanna :
- remove the
commit3
andcommit4
records - check out new branch on
commit2
to prepare merge - reset branch
release
tocommit1
think harder show which branch is when running git commands`
但是它给的答案达不到我想要的效果#7
这个 test 是我本地分支没有提交过远端,而且我本地也已经删除了这个分支。这是我麻烦的点。git rebase -i 1 的 commit id
然后 git 会打开一个编辑器,含有 2 和 3 的 commit
把 3 所在的行的 pick 改为 drop ,保存退出
( rebase 不会保留 merge 记录,所以顺带删除了 4 )先到 4 然后软重置到 2 ,接着 commit 后 force push
rebase 来合并提交然后强推
1 楼正解
只要 commit id 还在,reset --hard 基本万能的
#5 先 reset release 分支,然后从 2 的 commit id 切出来一条新分支...
剩下的就是看你需求了,在 release 分支执行 merge test / merge test -no-ff如果是删除,git reset --hard
git merge --squash ,会将分支中的所有 commit 组合为一个然后合并
-f
本地删除了分支也没事,用 git reflog 能看到过往历史,找到 test 分支的过往 commit hash 后,再用 git reset 之类的修改提交就好了
新建分支
cherry-pick 2
合并
看了帖子 mac mini 4 家庭影院无尽折腾之路 把我整得脑壳大... 如果搞家庭影院不想折腾,希望直接播放别人推荐片单的或者能检索一些热门资源。简而言之:花钱求稳定和便捷…
我最近想买一台可以在被窝里面玩的二手平板 (价格不超过一千), 顺便用它来远程控制我的电脑. 我今天用我的手机测试了一下安卓端的 RDP 客户端(微软官方), 发现了以下痛点:…
搜到的都是 1 月的消息,有人说没怎么限速,了解下当前的信息 文件分发直接 oss 啊… 腾讯云 200M 南京节点用了 3 个月, 没感觉到限速, 不过总共上行+下行…