使用MSYSGIT历史浏览器,我签出了一个特定的提交。 这是一个错误 - 我试图查看这些文件,并认为我必须检查它们才能看到它们。撤消在GIT结帐
从那时起,我一直无法推送任何更多的提交到我的远程回购(在GITHub上)。我有点理解,但不完全。 [我承认并不完全了解结帐的工作方式,请在小菜点上温和点。]
如何撤消结帐并使事情恢复到之前的状态?
如果我右键点击“签出”提交,我可以选择'删除此分支'。这会删除该提交的文件[坏]还是撤消检出?我吠叫错了树吗?
使用MSYSGIT历史浏览器,我签出了一个特定的提交。 这是一个错误 - 我试图查看这些文件,并认为我必须检查它们才能看到它们。撤消在GIT结帐
从那时起,我一直无法推送任何更多的提交到我的远程回购(在GITHub上)。我有点理解,但不完全。 [我承认并不完全了解结帐的工作方式,请在小菜点上温和点。]
如何撤消结帐并使事情恢复到之前的状态?
如果我右键点击“签出”提交,我可以选择'删除此分支'。这会删除该提交的文件[坏]还是撤消检出?我吠叫错了树吗?
我的理解是,你不小心签出了一个早期的提交,然后在你想保留的提交之上做了新的提交。首先,确保你有一个指针,以你现在的工作:
git checkout -b newbranch
然后,结帐你在哪里之前:
git checkout master
希望这将让你回到你的主线分支,你可以推到GitHub上像平常一样。如果再想在你所做的更改拉,就可以合并,(一旦你高兴)删除临时分支:
git merge newbranch
git branch -d newbranch
分支基本上是一个指针,用C++术语。
您可能想尝试移动分支以指向不同的提交。为此,请使用git reset
。
git checkout mybranch
git reset mypreviouscommit
这不会删除该承诺,但它确实让mybranch
“点” mypreviouscommit
。所以,mypreviouscommit
会在master
。
如果你不介意失去您所做的所有更改自上次拉来Github上,你可以简单地删除一个新鲜的,新的目录和
git clone ...
。
我不介意丢失我的其他提交,但它是一个记住的想法。顺便说一下,我发现这种态度在GIT中非常普遍(例如,我今天接触到了这个评论:“有趣,从来没有面对过这个问题,因为我定期从主服务器重新创建我的分支,正确的做法很多,特别是如果你有很多的贡献,但嘿...“[这不是一个非常悲伤的反映使用GIT的不切实际?!] – SamGoody 2009-08-31 07:27:24
如果你不想合并整个newbranch,你也可以选择cherry提交单个提交。 – Benno 2009-08-30 12:15:19
另外,如果其他人已将提交添加到远程主服务器,您将无法将主服务器推送到远程服务器。在那种情况下,做'git pull',然后'git push'应该可以工作。 – 2009-08-30 12:59:52
干得好!那样做了! [尽管这个问题还不是很清楚。]但我仍然好奇:如果我在msysgit历史浏览器中按下“删除此分支”,会发生什么?它会删除文件吗?甚至是在该文件之后做出的所有提交? – SamGoody 2009-08-31 07:21:07