gitee删除远程仓库某次提交记录

本文详细介绍了如何在git中安全地回滚远程仓库,包括删除最后一次提交、特定提交及修改提交的方法,以及注意事项。强调了权限管理和团队协作的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载地址:
http://blog.mtxcxin.cn/blog/git%E5%A6%82%E4%BD%95%E5%9B%9E%E6%BB%9A%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93.html

转载地址:git 删除远程分支上的某次提交 - 知乎 

关于远程仓库回滚

首先,必须要明白的一件事,任何普通用户不能擅自做有关远程仓库回退的操作,如果你擅自回滚了远程仓库,会对项目团队其他人造成不可预知的影响。如果需要回退版本,先联系项目的仓库管理员,在团队其他人都对自己本地未提交的工作做好备份之后,再进行远程仓库回退操作,操作结束后,团队成员需要重新同步远程仓库后继续自己的工作。

通常回滚远程仓库会有以下三种情形:

1、删除最后一次提交

这种情况是最简单的了,只需要以下两步就可以了

git revert HEAD
git push origin master

注意,revert和reset的区别:

revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在,而reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。如果还没有理解的话,我们做如下测试:
假设我们有以下三次提交记录:

现在我们使用revert放弃最后一次提交,之后执行git log:

git revert HEAD
git log

历史记录中还有第三次提交的记录,并且多了一次的提交,但是仓库内容已经回到了第二次提交之后的状态。 现在我们使用reset回到第三次提交,之后执行git log:

git reset --hard HEAD^
git log

历史记录中已经没有之前revert生成的提交记录了,现在应该明白了吧。 如果删除远程仓库的最后一次提交的时候不需要保留历史记录的话,可以使用reset,命令如下:

git reset --hard HEAD^
git push origin master -f

-f 参数是强制提交,因为reset之后本地库落后于远程库一个版本,因此需要强制提交。

2、删除历史某次提交

这种情况需要先用git log命令在历史记录中查找到想要删除的某次提交的commit id,比如下图中圈出来的就是注释为”2”的提交的commit id(由此可见提交的注释很重要,一定要认真写)

然后执行以下命令(”commit id”替换为想要删除的提交的”commit id”,需要注意最后的^号,意思是commit id的前一次提交):

git rebase -i "commit id"^

执行该条命令之后会打开一个编辑框,内容如下,列出了包含该次提交在内之后的所有提交。

然后在编辑框中删除你想要删除的提交所在行,然后保存退出就好啦,如果有冲突的需要解决冲突。接下来,执行以下命令,将本地仓库提交到远程库就完成了:

git push origin master -f

3、修改历史某次提交

这种情况的解决方法类似于第二种情况,只需要在第二条打开编辑框之后,将你想要修改的提交所在行的pick替换成edit然后保存退出,这个时候rebase会停在你要修改的提交,然后做你需要的修改,修改完毕之后,执行以下命令:

git add .
git commit --amend
git rebase --continue

如果你在之前的编辑框修改了n行,也就是说要对n次提交做修改,则需要重复执行以上步骤n次。

需要注意的是,在执行rebase命令对指定提交修改或删除之后,该次提交之后的所有提交的”commit id”都会改变。

本帖只留作记录使用,如有侵权联系即删 

引自:git 删除远程的某次提交

Gitee远程仓库中,如果由于误操作进行了强制推送,并想回退到之前的版本,你可以按照以下步骤操作: 1. **检查提交历史**: - 登录到 Gitee 控制台,找到你要管理的项目仓库。 - 点击 "Commit" 或者 "Commits" 标签页查看最近的提交记录。 2. **找到需要回滚的commit ID**: 查找那个你想撤销的提交,通常它是通过 SHA-1 格式的唯一标识符表示。如果你不确定哪个提交有问题,可以查找包含错误信息或明显不当操作的那一条。 3. **创建一个新的分支**: - 如果当前分支是你想要恢复的正确分支,从它创建一个新的备份分支,如 `backup-branch` 或 `revert-branch`。 ```bash git checkout -b backup-branch [commit_id_before_force_push] ``` 4. **删除强制推送的提交**: 使用 `git revert` 或 `git reset --hard` 来撤销强制推送的更改,这将创建一个新的提交来还原之前的状态。这里推荐使用 `git revert` 因为它会产生一个新的提交,保留了对原提交的引用。 ```bash git revert <force_push_commit_id> ``` 5. **推送到新的分支**: 将修改后的分支推送到你的仓库。 ```bash git push origin backup-branch ``` 6. **合并或替换主分支**: - 如果你需要将这个备份分支合并回原来的主分支(通常是 master),使用 `git merge` 或者 `git cherry-pick`(谨慎选择,因为直接合并可能会引入其他未解决的问题)。 - 如果你不希望保留这次错误的强制推送记录,可以在合并后直接将主分支指向新分支。 ```bash git checkout master git merge backup-branch # 如果你不想保留这次的提交,可以使用以下命令 git branch -D master git checkout backup-branch git rename backup-branch master git push origin master --force ``` 7. **通知团队**: 通知团队已回滚到正确的状态,并说明原因,以防类似情况再次发生。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值