创建分支后还原多个提交



我正在使用 git 来管理我的项目,但我在这种程序方面没有太多经验,所以我经常不恰当地使用它们(例如:我只在一次提交中提交许多(不相关的(更改(。我正在尝试更好地使用它们。

顺便说一句,我注意到我开始开发我的项目的扩展,更适合分支。因此,我从 git gui 创建了一个新分支,它是主节点的副本。现在我想将主节点恢复到我上次提交的与项目无关的提交。我知道这个提交是什么,但我不知道如何将所有提交从 HEAD 恢复到这个,我不知道这是否会影响分支(丢失所有新工作将是一个真正的痛苦..(

那么,我该怎么办?

Ps:通常我使用 git gui,但我使用 git bash 没有问题。我使用 win7,我正在 eclipse 中管理一个 java android 项目

如果您创建了分支,请更改回主节点并使用 git reset --hard commitid 将其重置为所需的提交。现在,"master"已设置为此提交,分支仍指向您之前为其配置的提交。

分支名称是特定提交的引用或备用名称。 reset 允许您更改引用指向的提交并强制工作树匹配(使用 --hard(

master分支的更改不会影响新分支的历史记录。

如果要将master 的 HEAD 更改为特定提交,请使用 reset:

git checkout master
git reset --hard <commit id>

如果您的事件顺序是:

  1. 承诺重大变革。
  2. 创建新分支。

你只想让master回到上一次提交之前,使用重置:

git checkout master
git reset --hard HEAD^

如果您的事件顺序是:

  1. 承诺重大变革。
  2. 提交其他更改(应保留在master中(。
  3. 创建新分支。

你只想从master中删除big change提交,同时保持所有其他提交不变,使用 revert:

git checkout master
git revert <commit id>

如果您的事件顺序是:

  1. 承诺重大变革。
  2. 提交其他更改(也应从master中删除(。
  3. 创建新分支。

并且您想从master中删除所有最近的提交,包括big change,使用重置:

git checkout master
git reset --hard <big change commit id>^

最新更新