相关疑难解决方法(0)

如何将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 git-revert git-checkout git-reset

7278
推荐指数
42
解决办法
549万
查看次数

如何在Git中将以前的版本恢复为新提交?

首先,我之前已经看到了这个问题的答案,但它被许多"答案"所掩盖,这些"答案"没有正确回答我的问题,我再也找不到了.

所以这就是:我如何将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)

git undo

8
推荐指数
1
解决办法
7104
查看次数

恢复远程分支上的提交

我在一个本地分支上工作,添加了许多提交.
然后我把它推到了remote staging分店.

现在我必须撤消已推送到的最后一次提交,remote staging即我本地分支的合并remote staging

我对其他答案的理解是,我必须使用还原而不是重置才能以干净的方式进行,不是吗?

所以我要做的是:

  1. 创建一个新的本地分支,例如cleaning具有master父级(在分段后面)
  2. 将遥控器拉staging入清洁状态
  3. 使用 git revert {last good commit hash in staging}
  4. 现在cleaning应该处于良好的提交状态并处于remote staging我的不良推动之前的状态,不是吗?
  5. 现在我应该推cleaningremote staging到具有远程分支恢复.有哪些旗帜?

我对么?因为git status在第4点告诉我,我是最新的staging

git

8
推荐指数
2
解决办法
2万
查看次数

git checkout不会删除应该删除的文件

使用公共仓库,我想让我的主分支回到过去的某个提交.我已经查看了选项,对我来说最好的事情看起来是对所需提交的简单检查,然后提交到主分支.但是,当我执行检出时,它不会删除在指定的提交哈希之后添加到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 git-checkout

6
推荐指数
2
解决办法
7605
查看次数

由于提交损坏,Git无法获取

我们其中一个人推动了一个似乎完整并在他的计算机上工作的提交.从那时起,其他任何计算机都无法从远程存储库中获取更改.每个人都得到的错误是:

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不会将提交显示为悬空,并且在远程服务器中,没有分支指向提交.

从提交中恢复数据不是优先事项,但让系统再次运行是.

有关如何删除/修复损坏的提交的任何建议?非常感谢帮助.

谢谢!

git commit fetch

5
推荐指数
1
解决办法
2271
查看次数

如何签出旧提交并将其推送到当前分支?

我的分支上有一些错误 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(我想要的正确提交)--- B(错误提交)--- C(错误提交)

所以我想有以下流程:

  • A --- B --- C --- A

我想恢复到 A(旧提交)并将其推送到当前分支(同一分支)。

什么是快速解决方案?


提前致谢。

git gitlab

1
推荐指数
1
解决办法
4196
查看次数

标签 统计

git ×6

git-checkout ×2

commit ×1

fetch ×1

git-reset ×1

git-revert ×1

gitlab ×1

undo ×1