这几天我正在学习如何使用git,我不得不做很多命中和失误.因此,我需要删除并重新创建我的远程和本地存储库.有没有办法回滚到repo的第一次提交并删除之后的所有历史记录?基本上是一个干净的石板试验.
我想做一个提交的还原,但仅限于某些文件.(不是结账;还原.如果您不熟悉差异,请继续阅读.)
我试过这个
git revert --no-commit abcdef123456 -- my/path/to/revert
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误
fatal: ambiguous argument 'my/path/to/revert': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Run Code Online (Sandbox Code Playgroud)
但这正是我所做的!(是的,my/path/to/revert是在我工作的树上.)
我的工作理论是,不可能仅还原某些文件,并且Git错误消息具有误导性.
(Git 1.7.9.5)
这不是一个重复的还原一个文件到git的以前的版本.
问题是:分支具有良好的提交,与不需要的提交交错.
尝试解决方案:
git revert hash5 hash8 hash9 hash23
Run Code Online (Sandbox Code Playgroud)
我认为这会做的是它应用所有指定的提交,然后让我解决任何冲突.
我现在认为发生了什么:
问题:在向我提出任何可能的冲突之前,如何让git连续应用所有恢复?
我们已经在GitHub上保护了我们的开发分支,以便下游没有人可以直接推送他们的提交.提交需要通过特定功能分支并通过拉取请求进行合并.
有一个场景,一个功能分支合并到开发分支(经过适当的审查和更改)后,我们需要稍后恢复(可能是由于需求的变化).如果我尝试恢复下游的合并提交,它将不允许我推送,因为分支受到保护.我记得GitHub在合并分支时提供了恢复按钮.但不知怎的,我现在无法看到(或找到)按钮.我们需要恢复优先级提交,因此我们暂时从开发分支中删除了保护并推送了恢复提交(最丑陋).
还有其他更好的替代方法可以从受保护的分支恢复提交吗?也许我错过了或误解了一些GitHub功能.
还有一个场景是,如果我在合并之后从GitHub中删除了分支,那我该怎么回复呢?
我做了一个提交,但现在很难看到我改变了什么.我当然可以做一个git diff,但我宁愿撤消最后一次提交并保持我的所有更改,以便我的IDE(PyCharm)只显示我已经更改了哪些文件.
那么有没有办法撤消上次提交(真的删除它),但仍保持我的变化?欢迎所有提示!
虽然我经常使用Git,但我还是初学者.
有时,我犯了一个错误,但只有在我提交之后才发现它.在那时,我通常不得不花费很长时间在互联网上寻找我应该用来摆脱它的命令(在推送之前).
每当发生这种情况时,我发现自己想知道我经常遇到的四个术语之间的区别是什么:
我认为现在是时候一劳永逸地学习这些差异了.这些是什么?
我做了几次提交(commit1/2/3),我更改了我的工作目录而没有存储.然后我想回去几次提交.所以我git revert commit1 commit2 commit3,但我被告知提交我的更改(commit4),所以我做了,然后我再做了git revert commit1 commit2 commit3 commit4,但我收到了一条消息
错误:樱桃挑选或恢复已经在进行中提示:尝试"git cherry-pick(--continue | --quit | --abort)"
当我运行git branch -va时,HEAD指向commit 3
我不太明白发生了什么.我现在该怎么办才能让事情恢复原状?
以下是推送的提交历史记录。
Commit Changed Files
Commit 1| (File a, File b, File c)
Commit 2| (File a, File b, File c)
Commit 3| (File a, File b, File c)
Commit 4| (File a, File b, File c)
Commit 5| (File a, File b, File c)
Run Code Online (Sandbox Code Playgroud)
我想恢复对Commit 3 的File b发生的更改 。 但我希望在提交 4 和 5 中对这个文件进行更改。
这必须简单,但我找不到它git-scm.
我一直在为公共项目做很多小提交,而且我的所有工作都很糟糕.我想删除我所做的一切.有些我刚刚在当地做过,有些我已经推到了'原始大师'.
第一次提交(一周前)是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)
Run Code Online (Sandbox Code Playgroud)
我将拉取请求合并到我们的开发分支中,但需要对其中一个文件进行额外的更改。我想恢复拉取请求,然后将更改添加到功能分支,但是当我在 Azure Devops 中使用恢复按钮时显示:
Encountered conflicts when reverting commit '8a750f'. This operation needs to be performed locally.
Run Code Online (Sandbox Code Playgroud)
信息非常少,没有任何内容可以指出错误是什么或错误在哪里。
我的第一个问题是:恢复原始功能分支,在此处添加新更改,然后再次合并它们Dev,使用新的拉取请求是添加新更改的最佳方式吗?或者我应该将新的更改添加到新分支中并将该分支推送到Dev?我主要关心的是如何将这两个功能分支(已经合并的分支Dev和新的分支)推送到进一步的分支,例如Test和Master?
第二个问题是关于错误消息:它是什么意思以及如何检查冲突?我使用 Visual Studio 2019 和 .Net Core 2.2。
git-revert ×10
git ×9
revert ×2
azure-devops ×1
conflict ×1
git-amend ×1
git-commit ×1
git-reset ×1
git-stage ×1
github ×1
merge ×1
protected ×1
repository ×1
rollback ×1
undo ×1