问题标签 [git-revert]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
322 浏览

git - 恢复分支更改 git describe 的标记名称

我刚刚学会了如何恢复分支。这很好用。问题是,我标记了 master 的提交,并且我计划使用该git describe命令来创建基于最新标记的部署。恢复提交会创建一个新的提交,因此该git describe命令会输出带有提交修改的标签,如下所示:

前:

恢复“返回”到此提交后:

有没有办法克服这个问题?还是我应该以不同的方式获取最新标签?

0 投票
6 回答
56990 浏览

git - 如何回滚 Git repo 以首先提交和删除所有历史记录

这些天我正在学习如何使用 git,我不得不做很多偶然的事情。因此,我需要删除并重新创建我的远程和本地存储库。有没有办法回滚到回购的第一次提交并在那之后删除所有历史记录?基本上是一张白纸进行实​​验。

0 投票
3 回答
1060 浏览

git - 如何修复错误合并中的历史记录

我在 Git 中有一个我无法解决的问题。我已经搜索了类似的案例,但我无法找到适合我情况的好的解决方案。

我基本上有 2 个分支,master 和 bugfix。错误修复是在我们完成发布时从 master 派生的。每次我们在 bugfix 中修复某些内容并进行 bugfix 发布时,我们都需要将其合并到 master 中。Master 包含新功能(当然不应该合并到错误修复中)。碰巧有人错误地将master与bugfix合并。

一个解决方案是恢复我使用“git revert -m 1 M”(M 是来自合并的 SHA)所做的合并,如此处所述。我做了一个还原,因为我们已经在 bugfix 分支中进行了其他我们不想丢失的更改,这对于 bugfix 分支来说效果很好。

当我们需要在 master 中合并 bugfix 分支时,问题就会出现。如我发布的链接中所述,revert 修复了代码更改但不修复历史记录,这意味着当我在 master 中合并 bugfix 时,revert 将生效并从 master(x1 和 x2)中删除更改。我能做的是在我将它合并到master之前恢复bugfix中的revert。

这可行,但不是最终解决方案,因为每次我们进行合并时,我们都需要执行“revert of the revert”。几天来,我一直在寻找永久解决方案,似乎唯一的选择是从错误修复分支的历史记录中删除主提交(x1 和 x2)。但是这里使用 x1 和 x2 只是作为示例,实际上我们有更多的提交,并且剖析 bugfix 分支的历史非常困难且容易出错。我确信 Git 可以帮助我做到这一点,但我不知道怎么做。

任何想法都会非常有帮助。

0 投票
1 回答
458 浏览

git - Git revert 正在覆盖我的文件

假设我在本地对文件进行了一堆更改,然后将这些更改添加到暂存索引中,然后提交它们。然后我意识到,实际上,我犯了一些错误,我想快速撤消整个提交并回到我提交之前的位置(即,我的更改从存储库中取出并返回到索引中)。

我试图做一个git revert SHA,这确实撤消了我最近的提交,但它也完全覆盖了我的所有文件并将它们恢复到原来的状态。

如何在不覆盖我更改的情况下恢复提交?

0 投票
1 回答
377 浏览

git - Git:如何避免在先前合并还原后合并功能分支时发生冲突

在我们的存储库中,我们基于功能分支开发功能。最近我将一个功能集成feature/myfeaturemaster

在这次合并之后,发生了更多的开发,直到结果证明这个功能有问题并且阻止了集成,所以我决定恢复这个合并。在https://stackoverflow.com/a/6217372/1237653之后,我选择了在不破坏历史记录的情况下恢复合并的唯一选项:

与此同时,更多的开发master已经发生,并且作者添加了修复提交。现在我想再次运行以集成/合并该功能。不幸的是,现在我遇到了十几个冲突,因为第一次应用和恢复与第二次尝试接触的代码行完全相同。

如何在没有那些毫无意义的冲突的情况下重新应用我以前恢复的功能分支?

我试过-s recursive -Xrenormalize没有运气。Rebase 也会引起同样的冲突。

0 投票
1 回答
318 浏览

git - 撤消对旧提交中特定文件的更改,不留下任何痕迹

我有一个分支,我在几个提交中对几个文件进行了一些更改。有一次,不久前,我开始对这些文件的一个子集做一些工作,并检查了一些更改。在那之后,我们决定将这些文件作为在另一个分支中完成的事情的一部分删除。因此,我想“取消”这些文件 - 它们与我在分支中所做的事情不再相关,并且我不想因此与其他已删除的文件造成任何合并冲突。

有什么方法可以更新进行这些更改的提交以使这些文件保持不变,并且在我的分支历史记录之外

更具体地说:

在当前状态下考虑以下源代码树:

在历史记录中大约有 10 次左右的提交,进行了一次提交,以下列方式进行了更改:

有没有办法可以C.java从历史记录中删除更改,这样当您查看上面的提交时,它看起来像

如您所见,它会出现,以至于C.java我的分支从未接触过。

我已经看过了git revert,但是在不创建新提交的情况下无法找到一种方法来做到这一点,这会重置旧提交所做的更改。我知道我也可以通过简单地删除我的分支中的文件来避免合并冲突,但这感觉就像一个“丑陋”的解决方案,这一次有效,但下一次可能不行(如果另一个分支中的更改不是删除,怎么办?但是修改?),所以如果有更清洁的方法我想学习它。

0 投票
2 回答
162 浏览

git - Git revert 搞砸 - 恢复?

所以我在 github 上有两个分支——master 和 refactor。我在本地检查了重构,然后去了城里。在某些时候,我搞砸了并做了一个git push origin master而不是推送到原始重构,此外,直到两周后对 master 进行了进一步的有效更改后才注意到这个问题。

/我的脸

为了尝试解决问题,我在本地检查了 master ,并做了一个git revert <some tag>,它通过删除我添加的各种文件来修复 master ,依此类推。美好的结局!推给起源大师,一切都很好。继续在我的本地重构分支上工作,偶尔推动原始重构。

今天,我完成了重构的第一遍,并希望将我的更改推送到 master。我git add,,,。git commit_ git push origin refactor一切都很好。然后我尝试推送到原始大师。失败!不足为奇,由于恶作剧需要手动合并,对吧?所以我git pull origin master在我当地的重构分支中......而且一切都变得松散了。我所有的新文件都被删除了,到处都是冲突。

认为正在发生的事情是试图应用恢复推送,并且与我应该干净地应用在主人之上的完美快乐的变化相冲突,如果只是。

所以,由于我仍然是一个 git newb,关于如何拯救我的跛足有什么建议吗?如果您可以就如何在我未来的工作流程中避免此类错误提供一些一般性指导/教育,则可以加分。谢谢!

0 投票
2 回答
1227 浏览

git - Git 不会删除在我恢复到的提交后创建的文件

我有一个 Rails 项目,我做了以下步骤:

  1. git commit -m "Format gemfile"git push确保一切都是干净的。这个提交的 id 是 b24d101

  2. git checkout -b newbranch

  3. 在新分支上,我删除了一个文件,对其他 2 个文件进行了更改并生成了其他几个文件。

  4. git status我修改了 2 个文件,删除了 1 个文件,还有几个文件未跟踪。到目前为止,一切都很好。

  5. 我注意到一个问题,所以我通过 移回主分支git checkout master并删除了新分支git branch -d newbranch

  6. git status仍然显示有几个未跟踪的文件。

  7. 我决定恢复到我的最后一次提交。

  8. git reset --hard b24d101

  9. git status现在显示没有文件被删除或修改(实际上我可以在手动检查后确认这一点,第 3 步中删除的文件在那里,第 3 步中对 2 个文件的编辑消失了)。但是我仍然有这几个未跟踪的文件。我不想要他们。git 不应该在创建这些文件后删除它们:a)在一个新分支上,该分支不再存在并且在删除之前没有合并,b)在我恢复到提交之后?

PS我想手动“清理”这些文件吗?

0 投票
2 回答
6970 浏览

git - 在合并时避免在另一个 Git 分支中恢复提交的影响

使用 git 流。我们有个不熟悉Git的同事昨天不小心把develop合并成了master。

Develop 有很多功能将在我们的下一个版本中启动,需要在合并时恢复。这创建了一个撤消所有更改的提交。当我们将 master 合并回 develop 时,revert commit 正在删除我们的功能生成的代码。

在保留新功能的同时,能够与 master 的修补程序同步开发的最佳方法是什么?

-- 编辑 -- 澄清一下,revert 是一个revert。IE git revert -m 1 <sha>,因为提交已经被推送到远程存储库。

自从发布此内容以来,我提出了一个可能的修复方法,即通过分支 master 并恢复还原,但是我很好奇是否还有其他可能性可以最大限度地减少冲突。

0 投票
1 回答
4329 浏览

git - 恢复特定作者自特定时间以来的所有提交

我想恢复 4 天前以来特定作者的所有提交。我该怎么做?

要获得所有 sha1s(有一点噪音),我可以使用这个: