不确定这是否是正确处理分支的方式。
- 我有一个在结构A上的应用程序。
- 当我在结构A上工作时,我创建了一个Z分支(但我一直在主分支上工作)。
- 在工作时(在主分支上),我更改了该结构并弄乱了所有内容。:)
- 我从未提交过也没有将这些新文件添加到版本库中。
请求:
- 我需要还原到最后一次提交的现有结构。撤消所有未提交的更改,并删除可能添加的新文件和文件夹。
如何实现?
不确定这是否是正确处理分支的方式。
请求:
如何实现?
git checkout A
(假设 A
是你之前所在的分支名...或者可能是 master
)。git branch -d <branchname>
,如果有未合并的提交,则可以加上 -f
参数。
编辑: 如果你的代码库中存在要删除的不良更改,可以使用git reset --hard HEAD
来撤销它们。如果有新文件(没有被 git 追踪),git clean -fd
将全部删除它们。显然,请谨慎使用,因为它们将无法通过 git 恢复。$ 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
如果你想要创建并切换到一个分支,可以使用git checkout命令的-b参数来创建分支并切换到它,例如:
git checkout -b Z
现在你需要做的是撤销你已经提交到主分支的更改。这将撤销该提交并使索引看起来就像在提交之前一样:
git checkout master
git reset --soft HEAD^
然后切换到 Z 分支并从索引(已暂存)提交更改:
git checkout Z
git commit -m "blah blah"
当然可以。你可以用很多不同的方式来实现这个目标。如果只有一个提交,你可以将Z分支合并到主分支中,以将该提交合并到主分支中。但我假设你根本不想在Z分支上提交。那么你可以做同样的事情,但切换分支,例如:请保留您的答案,因为它包含我必须理解的重要概念。但那没用。我需要做的是:获取分支Z并将其放置为主分支 - 这可能吗?
git checkout Z
git reset --soft HEAD^
git checkout master
git commit -m "blah blah"
git reset --hard
将撤销任何未提交的更改。如果您已经提交了错误的提交,请使用git revert <badcommit>
来撤销它们。一旦将主分支回滚到“良好”状态,您可以在主分支上执行git merge A
,希望能够修复问题。如果您不知道错误提交在哪里,请查看 git bisect - 非常酷。 - Dan Breengit clean -fd
,它将删除所有未跟踪的文件。我不知道 netbeans 是否使用该命令或手动执行,但以后可以参考一下。 - Dan Breen