Git丢弃已经推送到远程的提交

235 阅读2分钟

要丢弃已经推送到远程的 Git 提交,可以使用以下两种主要方法:git revertgit reset。这两种方法适用于不同的场景,具体如下:

使用 git revert

  1. 识别要撤销的提交: 使用以下命令查看提交历史,找到你想要撤销的提交的哈希值:

    git log --oneline
    
  2. 执行撤销: 使用 git revert 命令创建一个新的提交,该提交将撤销指定的提交:

    git revert <commit-hash>
    

    这将保留历史记录,并在远程仓库中创建一个新的提交来反转之前的更改。如果在撤销过程中出现冲突,Git 会提示你解决这些冲突。

  3. 推送更改: 完成撤销后,将新的提交推送到远程仓库:

    git push origin <branch-name>
    

使用 git reset(强制推送)

如果你希望完全删除某个已推送的提交(注意,这会影响其他协作者),可以使用 git reset 命令:

  1. 本地回退: 使用 git reset 命令将当前分支重置到指定的提交:

    git reset --hard <commit-hash>
    

    这里 <commit-hash> 是你希望回退到的提交的哈希值。

  2. 强制推送更改: 将本地更改强制推送到远程仓库,覆盖远程分支:

    git push origin <branch-name> --force
    

    这会导致远程仓库中的历史记录被重写,因此在执行此操作前,请确保与团队成员沟通并确认没有人依赖于被删除的提交。

注意事项

  • 选择合适的方法:使用 git revert 是更安全的方法,因为它不会重写历史记录,适合团队协作环境。而 git reset 和强制推送则会改变历史,可能导致其他开发者的问题。
  • 解决冲突:在使用 git revert 时,如果遇到冲突,需手动解决后再继续。
  • 备份重要数据:在进行任何破坏性操作(如 git reset --hard)之前,请确保备份重要数据。