相关疑难解决方法(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 reset --hard HEAD'恢复到之前的提交?

我知道Git会跟踪我对我的应用程序所做的更改,并且它会保留给他们,直到我提交更改,但这里是我挂断的地方:

当我想恢复到之前的提交时,我使用:

git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)

而Git回归:

HEAD is now at 820f417 micro
Run Code Online (Sandbox Code Playgroud)

然后,我如何将硬盘上的文件恢复为之前的提交?

我接下来的步骤是:

git add .
git commit -m "revert"
Run Code Online (Sandbox Code Playgroud)

但我的硬盘上没有任何文件发生变化......

我在做什么是对还是错?

git head git-revert git-reset

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

如何使用Git Revert

如何git revert使用?

这可能听起来像一个重复的问题,但是当人们问它时,响应通常git reset是按照Reit对Git中的SHA哈希的提交使用

然后当有人询问如何使用git reset人们回复说你应该git revert按照Git使用- 如何回滚

在你知道它之前,有8个不同的人出现了他们自己独特的方法来保存OP的屁股,所有这些都是你的头脑.

因此,让我们试着坚持简介并写一个假人指南git revert.

一个场景:你已经承诺了两次掌握和坏.你已经推动了,其他人也做了不好的改变.

你想撤消它.这不是你自己可以在代码中手动撤销的东西,比如一些巫师或包管理器改变了大量的东西 - 你只想把它全部放回去.

这就是源控制的全部内容.我很确定这很简单.

好的,你打算用,git revert但怎么样?

跑完之后git revert你还得做点什么吗?您是否必须提交已恢复的更改或确实还原直接提交到repo或什么?

显然你需要再次推进并且可能会向球队宣布你的球.

git

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

如何git使用SHA恢复提交

如何使用GIVEN SHA恢复提交?我只是想用给定的SHA删除更​​改?我希望在给出SHA之前和之后保留所有提交的内容.我只想删除指定SHA的更改.

我已经在Git中了一个SHA哈希提交的Revert?,我的理解是重置所有提交后我想要恢复的SHA.这不是我想要的方式.

git

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

rebase vs reset vs revert?我只是想回滚

假设我做了一些提交,让我们称它们为1,2,3,4,5和6(哈希).

假设我正在使用hash 6进行提交.我想要做的就是回到hash 3,这样我的代码库的状态就像我提交hash 3时的情况一样,好像其他提交从未发生过一样.

当我看到像回答这个,好像每个人都有不同的答案.reset,revert,rebase?我甚至不确定我是否知道这三个单词在英语中的区别.

我只是想参加之前的提交.谁能告诉我怎么做?

git

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

Git:如何在不进行分支或 git revert 的情况下用先前的提交替换当前的工作目录?

有没有一种简单的方法可以使用 git 进行以下操作?

提交复制粘贴图

基本上我想在我的提交历史记录的顶部创建一个新的提交,它相当于我的历史记录中的先前提交(例如,将项目恢复到先前的状态)。

我不想使用分支,因为我正在向以前从未使用过 git 的人教授这个,并且我希望尽可能保持“线性”。(我的大多数观众只需要备份内容,查看项目历史,并在必要时将项目恢复到以前的状态,但没有其他任何远程幻想。)

我不想使用,git revert --no-commit 49a732c..HEAD因为如果碰巧之后发生合并,这会给出错误消息49a732c(我承认这在我的观众中不太可能,但有时确实会通过疯狂尝试使错误消息消失而发生)。

我也不想删除/重写历史记录。

基本上,有没有更简单的方法来做到这一点?

# make sure on master and working directory clean
me@laptop:~/Desktop/proj$ git status
On branch master
nothing to commit, working directory clean

# check out commit to restore
me@laptop:~/Desktop/proj$ git checkout 49a732c
Note: checking out '49a732c'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without …
Run Code Online (Sandbox Code Playgroud)

git

7
推荐指数
2
解决办法
2631
查看次数

使分支等于另一个分支

我有两个git分支,branch_a和branch_b,两者都是分支主机.

我推了branch_a.但是,我想重置branch_a上的所有更改并将它们交换为branch_b上的更改.

我可以使用reversion提交将branch_a恢复到分歧点,然后在branch_b中合并branch_b或rebase branch_a.有更简单的方法吗?有没有办法说:"创建一个提交,使branch_a中的文件变得完全等于branch_b"?我不想解决冲突.branch_a是错误的,branch_b是对的.但是我无法重置为branch_b,因为我已经推送了branch_a.

git git-branch

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

将推送的分支恢复为具体提交

我已将dev分支(具有常量,有时不稳定的更改)合并到我们的主分支(我们存储已发布的稳定代码).我想将master分支恢复到之前的状态,就像从未发生与dev分支的合并一样(并且在将来我们合并dev分支时,我们现在将丢弃的所有更改将再次"合并").

这是主分支的当前状态,我希望它在HEAD上具有'professional-1.1.2'提交/标记.

主分支的状态

我试过了:

$ git revert -n professional-1.1.2..HEAD
fatal: Commit 9167e846a387c793edbc089c7ab6bd9eb8260456 is a merge but no -m option was given.
$ git revert -n -m 1 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
$ git revert -n -m 2 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
Run Code Online (Sandbox Code Playgroud)

经过一些研究后,我认为更好的选择是做一个git reset --hard professional-1.1.2git push --force作为Git的答案:如何忽略快进并将原点[branch]恢复到之前的提交?或者还原push'd git commit.其他开发人员在同一个办公室,他们永远不应该承诺任何东西(因为我不应该,但是......是的,我们没有每个分支的权限),所以告诉他们并做任何事都不是一个大问题需要采取的行动.

所以最后的问题是:git revert something或者git …

git git-revert git-reset

4
推荐指数
2
解决办法
9740
查看次数

Git更改分支,但不要更改工作区中的文件

这类似于我的另一个问题(切换到另一个分支而不更改工作区文件)但在那里工作的解决方案现在不起作用.

我需要删除一些很久以前推送到远程主服务器的更改.所以我不想删除master中的提交,但我想更改文件就像这些更改被还原一样.所以我这样做了:

  1. 在掌握时, git branch limits
  2. git checkout limits
  3. git rebase --interactive <commit before the ones I wanted to remove>
  4. 在交互式控制台中,我删除了我想要还原的更改提交

所以现在limits我已经拥有了像我想要的那样的代码.我如何"移动"它掌握?使用limits我希望更改为master分支的代码,但不更改工作空间中的任何文件,因此我可以将更改作为新更改提交到master.

git branch git-branch

4
推荐指数
2
解决办法
4683
查看次数

在TFS上回滚GIT

我是TFS和GIT的菜鸟,并将现有的Lightswitch项目迁移到TFS.我在TFS中启动了一个带有GIT仓库的新项目并加载了我的项目,但在重命名父目录后,几乎立即在主文件上损坏了一些东西.我试图恢复到我最初加载的提交(我可以下载zip并确认它按预期工作),但最终只是添加了一些其他提交更改,这些更改没有让我回到原始状态.

作为序言,当我克隆到Visual Studio时,我相信它会拉动最新的sln,除非我从拉链拉出来.但是使用zip,我无法推送提交(或者至少我认为).我现在意识到>:PI是一个白痴,应该立即开始分支,但长话短说,TFS的第一次加载没有拉入sln因为我从我的本地git拉到远程服务器,所以我不得不创建基于加载的git历史记录的新解决方案.所有这些都在升级VS 2013 >> 2015以匹配2015 TFS服务器之后.

在此输入图像描述

我尝试了'git revert bf4d79..26aa08'和'git log'中的长ID,但它在星期一刚刚添加了前两个.我觉得我走向了错误的方向,我担心我会杀了我的多月项目.最糟糕的情况我从TFS删除项目并从头开始.

顺便说一句,我是这方面唯一的开发人员,拥有它的所有管理员权限.如果你没有猜到,我从业务方面自学,但现在已经发展了几年.

显然非常感谢任何帮助,我在这一切中学到了一些宝贵的经验教训.谢谢!

这是我遇到困难的更好的图片.

在此输入图像描述

在此输入图像描述

**************回答******************

谢谢TerjeSandstrøm!工作就像一个魅力.

git reset --hard 4358ca58

git push -f origin master
Run Code Online (Sandbox Code Playgroud)

另外,弄清楚为什么从git到TFS的初始传输没有携带sln文件.sln被保存在git tracked文件夹之外.

从错误中吸取教训可能很困难,但它肯定会阻止你重复它.

在此输入图像描述

git version-control tfs visual-studio-2015

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

理解`git reset --hard`

假设我有一个Git repo,其中包含以下提交给主服务器:A,B,C,D.我想将主服务器回滚到它在以下提交A中的状态; 换句话说,丢弃B,C和D的变化.我很确定git reset --hard会这样做.但是,我想有选择地重新应用一些丢弃的补丁(git cherry-pick这就是我想要的,对吧?)所以我的具体问题是:

  1. 是否git reset --hard请从提交历史什么?如果我将主机重置为A,B,C和D仍然会在回购中闲置吗?

  2. 难道git cherry-pick让我做什么上述我,还是我误会了?

git

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