gpt4 book ai didi

git - 如何完成还原提交,以及如何还原大量提交

转载 作者:IT王子 更新时间:2023-10-29 01:04:41 28 4
gpt4 key购买 nike

这一定很简单,但我在 git-scm 中找不到。

我一直在为一个公共(public)项目做出很多小的 promise ,但我的所有工作都很糟糕。我想删除我所做的一切。有些我刚刚在本地提交,有些我已经推送到“origin master”。

第一次提交(一周前)是bdbad86...最近的是e82401b...

我只想让所有这些消失。我试过还原一个。

git status  
# On branch master
# You are currently reverting commit e82401b.
# (all conflicts fixed: run "git revert --continue")
# (use "git revert --abort" to cancel the revert operation)
  1. 我不知道如何完成这个还原。
  2. 我不想每次都单独提交,我想把它们全部扔掉。

最佳答案

我在这里假设没有其他人在您的工作之间插入提交,并且您的错误提交在 repo 历史中形成了一个连续的范围。否则你将不得不变得更加复杂。假设您的历史记录如下所示:

e82401b - (master, HEAD) My most recent private commit
...
bc2da37 - My first private commit
cf3a183 - (origin/master) My most recent bad public commit
...
292acf1 - My first bad public commit
82edb2a - The last good public commit

我们要做的第一件事是清除您尚未公开的提交。您可以使用以下命令执行此操作(请注意,您的更改将消失并且应被视为不可恢复):

git reset --hard cf3a183 

等价地(并且更具可读性):

git reset--hard origin/master

现在您对存储库的看法与 origin/master 中的看法一致。您现在想要恢复不良的公共(public)更改并将它们发布为恢复提交。这些说明用于创建单个还原提交。

您可以使用 git revert --no-commit a..b 来还原从 after a 开始的所有提交 (请注意!)并结束于并包括提交 b。将上演还原以供您提交。所以,在这里,我们会做:

git revert --no-commit 82edb2a..HEAD

或者,等价地:

git revert --no-commit 292acf1^..HEAD

记住 HEAD 现在指向与 origin/master 相同的位置。

运行 revert 命令后,您现在已经暂存更改并准备好提交,所以只需运行一个简单的 git commit -m "Reverting those bad changes I accidentally pushed and make public"

关于git - 如何完成还原提交,以及如何还原大量提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20604167/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com