请教 git 里怎么删除记录

1 天前
 magic3584

请大佬指点:

分支情况如下图:

  1. 1 创建新的 test 分支
  2. test 分支上分别进行了 2 3 提交
  3. merge test to release 的时候产生了 4提交
  4. 删除了 test 分支

我现在想回退到 2来删除 3 4记录,是否能做到?如果可以的话,应该在哪个分支执行什么 git 命令。

3289 次点击
所在节点    git
25 条回复
baiyi
1 天前
git reflog 查看记录

git reset 重置当前状态
avenger
1 天前
去看 git rebase 的文档
I2E
1 天前
git reset --hard 2 的 commit id
cc666
1 天前
这种问题可以直接问 AI

AI 大概会问你你到底想干什么
magic3584
1 天前
@avenger #2
git rebase 可以把 release 上从 4 回退到 1 ,但是由于我删除了 test 分支,所以不知道怎么删除 3
yaocf
1 天前
前提:只有你一个人,或者,你可以说动协作开发的其他成员进行强制拉取。

首先,请保持工作区干净
即:
`git status`提示当前无修改

步骤一
向前软重置一步。重复执行,直到退到记录 1
git reset --soft HEAD^1
或者是直接一步到位退到记录 1
git reset --soft ${记录 1 的 commit id}

步骤二
提交当前工作区
git commit ${可以填写记录 2 的提交信息,也可以顺带标注一下回退原因}

步骤三
强制 push ,覆盖远端
git push --force

步骤四
如果有协作开发的同学,揖让让他们拉一下新的远端再接着开发。
yaocf
1 天前
@yaocf 这个前提只针对 test 分支。也就是如果只有你一个人在 test 分支,就无所谓。
magic3584
1 天前
@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`
但是它给的答案达不到我想要的效果
magic3584
1 天前
@yaocf #7
这个 test 是我本地分支没有提交过远端,而且我本地也已经删除了这个分支。这是我麻烦的点。
LGA1150
1 天前
git rebase -i 1 的 commit id
然后 git 会打开一个编辑器,含有 2 和 3 的 commit
把 3 所在的行的 pick 改为 drop ,保存退出
( rebase 不会保留 merge 记录,所以顺带删除了 4 )
Ipsum
1 天前
先到 4 然后软重置到 2 ,接着 commit 后 force push
benjen000
1 天前
rebase 来合并提交然后强推
hwdq0012
1 天前
1 楼正解
choah
1 天前
只要 commit id 还在,reset --hard 基本万能的
wenrouxiaozhu
1 天前
@magic3584 #5 先 reset release 分支,然后从 2 的 commit id 切出来一条新分支...
剩下的就是看你需求了,在 release 分支执行 merge test / merge test -no-ff
Rickkkkkkk
1 天前
如果是删除,git reset --hard
jayasme
1 天前
git merge --squash ,会将分支中的所有 commit 组合为一个然后合并
belin520
1 天前
-f
857681664
1 天前
@magic3584 本地删除了分支也没事,用 git reflog 能看到过往历史,找到 test 分支的过往 commit hash 后,再用 git reset 之类的修改提交就好了
seth19960929
1 天前
新建分支
cherry-pick 2
合并

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1156172

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX