2011-12-18 48 views
2

我在一个项目上做了一些工作,但后来意识到这不是要走的路。所以我想回到更早的,干净的版本。但是,我不想失去我在这个干净的修订和今天之间所做的工作,以便稍后如果我改变主意,我可以参考它。如何返回到早期版本而不会丢失工作?

在git中处理这个问题的最佳方法是什么?

回答

4

你有两个合理的方案:

  1. 使用git-stash。只需输入git stash即可隐藏,或者输入git stash save some descriptive message可为其提供描述性信息。随后可以用git stash apply(或git stash pop)重新申请。

  2. 进行提交,在其上放置标记,然后重置回父级。您稍后可以通过访问标签来检索您的工作。这将是git commit -m 'Temp work'; git tag tempWork; git reset --hard HEAD^

+0

由于我已经提交了我的更改,我想我会做你的第二个方法。但是,如果我进行重置,我是否不会丢失位于重置位置和今天之间的标签? – 2011-12-18 07:22:44

+0

@Laurent:编号重置不会触摸标记,就像它不触及分支(除了检出标记之外)。实际上,标签和分支实际上是完全相同的东西(它们都只是名称引用),除了git可以识别标签的命名模式,并且不会让您在不生成分离的HEAD的情况下签出标签。 – 2011-12-18 08:41:00

6

这正是为什么git stash存在:

  1. git stash
  2. git checkout earlier_point
  3. git stash pop
0

假设你的 “坏” 提交了上主做,他们没有被嘘ARED与任何人及13d7代表最后的 “好” 的承诺:

git的结帐-b my_bad_branch
//创建一个包含一切,我们已经thusfar
git的结帐主
做了一个新的分支 GIT中的复位 - 硬13d7
//重置主指向已知的良好头指针提交

或者,如果他们被分享:

git的结帐-b my_bad_branch
git的结帐主
混帐恢复13d7
//创建这之后撤消坏提交新提交13d7
git push
//确保每个人都得到主人修复了错误的提交

相关问题