1

我正在使用 git 来管理我的项目,但我对这类程序的经验并不多,所以我经常不正确地使用它们(例如:我只在一次提交中提交了许多(不相关的)更改)。我正在尝试更好地使用它们。

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

那么,我该怎么办?

ps:平时我用的是git gui,但是我用git bash没问题。我使用win7,我在eclipse中管理一个java android项目

4

2 回答 2

2

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

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

于 2011-12-20T12:49:28.353 回答
2

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

如果您想将masterHEAD 更改为特定提交,请使用reset

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

如果您的事件顺序是:

  1. 做出重大改变。
  2. 创建新分支。

而您只想master回到上一次提交之前,请使用reset

git checkout master
git reset --hard HEAD^

如果您的事件顺序是:

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

而且您只想删除big change提交,master同时保留所有其他提交不变,请使用revert

git checkout master
git revert <commit id>

如果您的事件顺序是:

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

并且您想删除所有最近的提交,包括big changefrom master,使用reset

git checkout master
git reset --hard <big change commit id>^
于 2011-12-20T13:12:56.453 回答