我不小心将错误的文件提交给Git,但我还没有将提交推送到服务器.
如何从本地存储库中撤消这些提交?
如何从当前状态恢复为在某个提交时创建的快照?
如果我这样做git log,那么我得到以下输出:
$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date: Thu Nov 4 18:59:41 2010 -0400
blah blah blah...
commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date: Thu Nov 4 05:13:39 2010 -0400
more blah blah blah...
commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date: Thu Nov 4 00:55:06 2010 -0400
And yet more blah blah...
commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date: Wed Nov 3 23:56:08 2010 -0400
Yep, more blah blah.
Run Code Online (Sandbox Code Playgroud)
如何从11月3日恢复提交,即提交0d1d7fc?
由于一些糟糕的挑选,我的本地Git存储库目前在原点之前提交了五个提交,并且状态不佳.我想摆脱所有这些提交并重新开始.
显然,删除我的工作目录并重新克隆会这样做,但是再次从GitHub下载所有内容似乎有些过分,而且不能很好地利用我的时间.
也许git revert是我需要的,但我不希望在原点(甚至六个)之前提交10个提交,即使它确实使代码本身恢复到正确的状态.我只想假装最后半小时从未发生过.
是否有一个简单的命令可以做到这一点?这似乎是一个明显的用例,但我没有找到它的任何例子.
请注意,这个问题具体是关于提交,而不是关于:
我看到有趣的帖子解释了微妙之处git reset.
不幸的是,我读的越多,我就越不能完全理解它.我来自SVN背景,Git是一个全新的范例.我很容易变得善变,但Git更具技术性.
我认为git reset很接近hg revert,但似乎存在差异.
究竟究竟做了git reset什么?请包括以下详细说明:
--hard,--soft和--merge;HEAD如HEAD^和HEAD~1;HEAD全球压力水平的影响.我很好奇如何删除git中的第一个提交.
在做出任何事情之前的修改是什么?此修订版是否有名称或标记?
我试图第一次将代码推送到我的git存储库但是我收到以下错误:
Run Code Online (Sandbox Code Playgroud)Counting objects: 222026, done. Compressing objects: 100% (208850/208850), done. Write failed: Broken pipe222026) error: pack-objects died of signal 13 fatal: The remote end hung up unexpectedly error: failed to push some refs to 'ssh://git@bitbucket.org/<...>'
我试图增加http缓冲区大小(git config http.postBuffer 524288000),我试过git repack,但它没有用.
我能够将一个非常相似的大小代码推送到另一个存储库(它不像这个git repack一样工作,但它确实工作后).我想把它推到bitbucket.
有任何想法吗?
git ×6
git-commit ×2
bitbucket ×1
broken-pipe ×1
commit ×1
git-checkout ×1
git-reset ×1
git-revert ×1
pre-commit ×1
push ×1
repository ×1
reset ×1
undo ×1