请大佬指点:
分支情况如下图:
1
创建新的 test
分支test
分支上分别进行了 2
3
提交4
提交test
分支我现在想回退到 2
来删除 3
4
记录,是否能做到?如果可以的话,应该在哪个分支执行什么 git 命令。
AI 让我执行了 git reflog expire --expire-unreachable=now --expire=now --all,现在git reflog 被清空了,这个问题算是 “解决了”😂
![]() |
1
baiyi 19 小时 38 分钟前
git reflog 查看记录
git reset 重置当前状态 |
![]() |
2
avenger 19 小时 38 分钟前
去看 git rebase 的文档
|
![]() |
3
I2E 19 小时 34 分钟前
git reset --hard 2 的 commit id
|
4
cc666 19 小时 34 分钟前
这种问题可以直接问 AI
AI 大概会问你你到底想干什么 |
![]() |
5
magic3584 OP @avenger #2
git rebase 可以把 release 上从 4 回退到 1 ,但是由于我删除了 test 分支,所以不知道怎么删除 3 |
![]() |
6
yaocf 19 小时 33 分钟前
前提:只有你一个人,或者,你可以说动协作开发的其他成员进行强制拉取。
首先,请保持工作区干净 即: `git status`提示当前无修改 步骤一 向前软重置一步。重复执行,直到退到记录 1 git reset --soft HEAD^1 或者是直接一步到位退到记录 1 git reset --soft ${记录 1 的 commit id} 步骤二 提交当前工作区 git commit ${可以填写记录 2 的提交信息,也可以顺带标注一下回退原因} 步骤三 强制 push ,覆盖远端 git push --force 步骤四 如果有协作开发的同学,揖让让他们拉一下新的远端再接着开发。 |
![]() |
8
magic3584 OP @cc666 #4
问了 claude `I 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 : 1. remove the `commit3` and `commit4` records 2. check out new branch on `commit2` to prepare merge 3. reset branch `release` to `commit1` think harder 4. show which branch is when running git commands` 但是它给的答案达不到我想要的效果 |
![]() |
10
LGA1150 19 小时 26 分钟前 ![]() git rebase -i 1 的 commit id
然后 git 会打开一个编辑器,含有 2 和 3 的 commit 把 3 所在的行的 pick 改为 drop ,保存退出 ( rebase 不会保留 merge 记录,所以顺带删除了 4 ) |
![]() |
11
Ipsum 18 小时 55 分钟前 via Android
先到 4 然后软重置到 2 ,接着 commit 后 force push
|
12
benjen000 18 小时 38 分钟前 via Android
rebase 来合并提交然后强推
|
13
hwdq0012 18 小时 37 分钟前
1 楼正解
|
14
choah 18 小时 36 分钟前
只要 commit id 还在,reset --hard 基本万能的
|
15
wenrouxiaozhu 18 小时 21 分钟前
@magic3584 #5 先 reset release 分支,然后从 2 的 commit id 切出来一条新分支...
剩下的就是看你需求了,在 release 分支执行 merge test / merge test -no-ff |
16
Rickkkkkkk 18 小时 13 分钟前
如果是删除,git reset --hard
|
17
jayasme 17 小时 54 分钟前
git merge --squash ,会将分支中的所有 commit 组合为一个然后合并
|
![]() |
18
belin520 17 小时 53 分钟前
-f
|
![]() |
19
857681664 17 小时 40 分钟前
@magic3584 本地删除了分支也没事,用 git reflog 能看到过往历史,找到 test 分支的过往 commit hash 后,再用 git reset 之类的修改提交就好了
|
![]() |
20
seth19960929 17 小时 8 分钟前
新建分支
cherry-pick 2 合并 |
21
realJamespond 15 小时 7 分钟前
reset 1 -> cherry pick 2
|
![]() |
22
vegetableChick 14 小时 52 分钟前
cherry-pick
|
![]() |
23
shily 14 小时 6 分钟前
#8 假设 OP 想移除 3 、4 号提交,并重新建立 release 分支。
1.1 git tag tag-1 1 号提交的 hash 1.2 git tag tag-2 2 号提交的 hash 2. git branch --D release # 强制删除分支 3. git checkout tag-1 -b release # 使用 1 号提交的 hash 重新拉出 release 4. git merge tag-2 # merge 2 号提交到 release 分支 |
24
sampeng 14 小时 3 分钟前
开发群里大喊一声: “所有人别提交代码。我要变身了”。
然后修复本地的代码树,push 。再大喊一声:"变身完毕,都拉一下吧" |