如何从当前状态恢复为在某个提交时创建的快照?
如果我这样做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恢复到历史记录中的先前版本,以便它成为我当前历史记录中的新提交?
基本上,这是我想用版本控制系统做的最基本的事情.简单地执行重置不起作用,因为它抛弃了我的历史记录,简单的恢复也不起作用,因为有时它会给我错误消息(我想要做的事情应该是没有任何错误消息的).
编辑:
如果我只是做了git revert这个错误发生:
git revert HEAD~1
error: could not revert f1b44e3... Towards translating API to kernel.
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
Run Code Online (Sandbox Code Playgroud) 我在一个本地分支上工作,添加了许多提交.
然后我把它推到了remote staging分店.
现在我必须撤消已推送到的最后一次提交,remote staging即我本地分支的合并remote staging
我对其他答案的理解是,我必须使用还原而不是重置才能以干净的方式进行,不是吗?
所以我要做的是:
cleaning具有master父级(在分段后面)staging入清洁状态git revert {last good commit hash in staging}cleaning应该处于良好的提交状态并处于remote staging我的不良推动之前的状态,不是吗?cleaning入remote staging到具有远程分支恢复.有哪些旗帜?我对么?因为git status在第4点告诉我,我是最新的staging
使用公共仓库,我想让我的主分支回到过去的某个提交.我已经查看了选项,对我来说最好的事情看起来是对所需提交的简单检查,然后提交到主分支.但是,当我执行检出时,它不会删除在指定的提交哈希之后添加到master中的某些文件.
例如,如果我想回到提交aaa1:
$ cd working-copy-top-dir
$ git checkout master
$ git checkout -- .
$ git clean -fd
$ git checkout aaa1 .
$ git clean -fd
Run Code Online (Sandbox Code Playgroud)
但此时添加的一些文件aaa1仍在工作副本中.什么是checkout命令来获得工作拷贝数据回来是怎么回事的aaa1?
$ git --version
git version 2.7.2.windows.1
Run Code Online (Sandbox Code Playgroud) 我们其中一个人推动了一个似乎完整并在他的计算机上工作的提交.从那时起,其他任何计算机都无法从远程存储库中获取更改.每个人都得到的错误是:
git.exe fetch -v --progress "origin"
POST git-upload-pack (gzip 1407 to 775 bytes)
remote: error: Could not read a75720ce47ae8dcc1d0b4c09fcb7d6f70efa390b
remote: fatal: revision walk setup failed
remote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header
git did not exit cleanly (exit code 128) (14368 ms @ 26/10/2014 11:49:05)
Run Code Online (Sandbox Code Playgroud)
无法读取的SHA(a75720 ...)是所述提交的SHA.
我们尝试了各种各样的东西,但似乎没有任何效果.运行git fsck不会将提交显示为悬空,并且在远程服务器中,没有分支指向提交.
从提交中恢复数据不是优先事项,但让系统再次运行是.
有关如何删除/修复损坏的提交的任何建议?非常感谢帮助.
谢谢!
我的分支上有一些错误 commit/push,然后我想恢复到旧的正确提交并将其推送到当前分支上。
我有以下问题:
git log
new: xxxxxxx
...
old: ac758a3
git checkout ac758a3
git commit -m 'revert to old branch (ac758a3) to push it on current branch'
Run Code Online (Sandbox Code Playgroud)
出去:
HEAD detached at ac758a3
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)
[编辑]
我想恢复到 A(旧提交)并将其推送到当前分支(同一分支)。
什么是快速解决方案?
提前致谢。