不确定这是否是使用分支的正确方法。
- 我在结构 A 上有这个应用程序。
- 我在结构 A 上创建了一个分支 Z(但我让自己在主分支上工作)。
- 在工作时(在主分支上),我改变了那个结构,我最终把一切都搞砸了。:)
- 我从未向代表提交或添加这些新文件。
要求:
- 我需要恢复到上次提交时存在的结构。还原所有未提交的更改,并删除可能已添加的新文件和文件夹。
如何才能做到这一点?
不确定这是否是使用分支的正确方法。
要求:
如何才能做到这一点?
如果您创建了一个混乱的单独分支,您需要做的就是切换回您之前所在的分支git checkout A
:(假设A
是您所在分支的名称......或者它可能是master
)。
如果需要,您可以稍后删除错误的分支,如果有未合并的提交,也可以添加git branch -d <branchname>
一个。-f
编辑:如果您的存储库包含许多要删除的错误更改,您可以使用git reset --hard HEAD
撤消它们。如果有新文件(不被 git 跟踪),git clean -fd
将全部删除。显然,请谨慎使用,因为 git 无法恢复它们。
我需要反转到分支 Z 上的结构 A“快照”
$ git checkout A
$ git branch -d Z
$ git branch Z
$ git reset --hard HEAD~3
$ git checkout Z
用英语:
删除您的“Z”分支并从“A”的当前状态重新创建它。
将您的 A 分支重置为三个提交。这是一个例子——在你的历史中,三个可能不是重置到的正确深度。将该数字更改为正确的数字(并用于git log
计算出分支分支的提交次数)。
切换到您的 Z 分支并确认您以前在“A”中的更改现在在“Z”中。
我怀疑你只创建了分支:
git branch Z
当您实际上想要创建它并切换到它时。您可以通过使用 -b 标志来创建一个分支并切换到它以进行 git checkout,如下所示:
git checkout -b Z
您现在需要做的是撤消已提交到主分支的更改。这将撤消提交并使索引看起来就像提交之前一样:
git checkout master
git reset --soft HEAD^
然后切换到 Z 并提交索引中的更改(已经暂存):
git checkout Z
git commit -m "blah blah"
希望这可以帮助。
哦,是的,避免直接在 master 上工作,除非它是一个简单的错误修复。
请保留您的答案,因为它包含我必须理解的重要概念。那没有用。我需要的是:抓住分支 Z 并将其作为主人 - 这可能吗?
当然是的。你可以通过很多不同的方式做到这一点。如果只有一个提交,您可以将 Z 分支合并到 master 以将该提交提交到 master。但我假设你根本不想要 Z 分支上的提交。然后你可以做同样的事情但切换分支,例如:
git checkout Z
git reset --soft HEAD^
git checkout master
git commit -m "blah blah"