如何删除或修改先前删除且已重新引入的 Git 提交

问题描述 投票:0回答:1

我最近遇到了一个 Git 问题,导致了一些问题,我正在寻求一些有关如何解决它的建议。情况是这样的:

我正在处理我们的存储库,不小心使用我的个人用户名而不是我的工作帐户推送了提交。为了纠正这个问题,我从 Git 历史记录中删除了提交并重新完成了工作。此时一切看起来都很好 — 提交在 Visual Studio 或 Bitbucket 上不再可见,并且工作仍然按预期完成。

但是,一位小组成员后来推送到了存储库,并以某种方式设法重新引入了之前删除的提交。更糟糕的是,这个提交不再是最新的,并且从那时起又添加了几个分支。它也已合并到主分支中。

我想永久删除此提交,或者至少更改与之关联的用户名和电子邮件,因为它包含个人信息,而且永远保留这样的东西显然不专业。我在 Bitbucket 上看到了this 文章,其中建议使用变基来解决这个问题。然而,我以前从未重新建立过基础,而且我担心可能会破坏任何东西,特别是考虑到分支的数量以及它已合并到主分支中的事实。

我的问题是:此时我可以做些什么来永久删除或编辑此提交,还是我不得不处理它?

任何有关如何处理这种情况的指导或分步说明将不胜感激。预先感谢您的帮助。

我在第一次提交时尝试删除该提交,这很有效,直到一个小组成员推动并以某种方式将其恢复。现在我不知道如何解决这个问题而不可能破坏很多东西。

git bitbucket rebase
1个回答
0
投票

我知道可能还有其他方法来处理这个问题,但这就是我在不小心推送到 Bitbucket 时所做的,这需要一些跑腿工作,但是,我可以预见地理解精细控制会发生什么:

备份故障分支

  1. 检查/拉出有问题的分支
  2. 利用
    git switch -c branch_backup_name
    备份分支
  3. 将备份的分支推送到服务器

删除计算机上故障分支的本地版本

git branch -D branch_to_fix

检查错误之前的提交(例如,如果 757c47d4 是您个人帐户之前的提交),并重命名为您正在修复的分支

git checkout 757c47d4
git switch -c branch_to_fix

在Bitbucket中删除服务器上有故障的分支

  1. 单击左侧菜单上的分支可列出 Bitbucket 中的分支
  2. 单击 3 个垂直点以获取上下文菜单
  3. 删除故障分支(不是备份分支)

重新添加您的更改

  1. 编辑您的代码库
  2. git add .
  3. git commit -m "Your commit message"

从备份分支中挑选您想要的单个提交(您的其他提交、您同事的提交等)

git cherry-pick 12345678
git cherry-pick ...

将本地分支推送到服务器(可能会要求您根据 git 设置设置上游)

git push

此时,您应该拥有错误的备份分支以及从头开始的新分支。如果您愿意,您可以选择删除备份分支。您的同事需要使用

git branch -D branch_to_fix
在本地删除分支,然后从服务器检出您的新分支。

© www.soinside.com 2019 - 2024. All rights reserved.