标签: git-revert

如何撤消对特定文件的本地更改

我正在尝试撤消对特定文件的本地更改.没有任何承诺.

当我想恢复所有更改时,我可以执行git revert --reset HEAD.但是,在这种情况下,我不想还原所有文件的所有更改.

即使在阅读了git-revert(3)手册页之后,我还不清楚或明白如何恢复文件:

NAME
       git-revert - Revert some existing commits

SYNOPSIS
       git revert [--[no-]edit] [-n] [-m parent-number] [-s] <commit>...
       git revert --continue
       git revert --quit
       git revert --abort
...
Run Code Online (Sandbox Code Playgroud)

这类似于如何在git上恢复旧提交中的特定文件,但是没有执行任何提交.与OP不同,谁想要回到任意提交,我只想让文件返回MASTER的副本.

在SVN下,我只是删除有问题的文件然后执行svn update.

如何将更改还原到单个文件?

git git-revert

164
推荐指数
1
解决办法
13万
查看次数

为什么git revert抱怨缺少-m选项?

所以我正在与其他人一起开展一个项目,并且有多个github forks正在进行中.有人刚刚修复了一个问题并且我与他的分叉合并,但后来我意识到我可以找到更好的解决方案.我想恢复我刚刚提交的提交.我试过这样做,git revert HEAD但它给了我这个错误:

fatal: Commit <SHA1> is a merge but no -m option was given.

那是什么意思?当我合并并提交时,我确实使用-m选项说"Merged with <username>".

我在这做错了什么?

git github git-revert

156
推荐指数
3
解决办法
9万
查看次数

如何将HEAD移回以前的位置?(独立头)和撤消提交

在git中,我试图squash commit通过合并另一个分支然后HEAD通过以下方式重置到上一个位置:

git reset origin/master
Run Code Online (Sandbox Code Playgroud)

但我需要走出这一步.如何将HEAD移回上一个位置?

我有23b6772提交的SHA1 frag(),我需要将其移动到.
我怎样才能回到这个提交?

git git-revert git-checkout git-reset git-reflog

141
推荐指数
4
解决办法
17万
查看次数

我需要在我的主分支中弹出并删除"中间"提交.我该怎么做?

例如,在下面的主分支中,我需要删除提交af5c7bf16e6f04321f966b4231371b21475bc4da,这是由于之前的rebase导致的第二个:

commit 60b413512e616997c8b929012cf9ca56bf5c9113
Author: Luca G. Soave <luca.soave@gmail.com>
Date:   Tue Apr 12 23:50:15 2011 +0200

    add generic config/initializers/omniauth.example.rb

commit af5c7bf16e6f04321f966b4231371b21475bc4da
Author: Luca G. Soave <luca.soave@gmail.com>
Date:   Fri Apr 22 00:15:50 2011 +0200

    show github user info if logged

commit e6523efada4d75084e81971c4dc2aec621d45530
Author: Luca G. Soave <luca.soave@gmail.com>
Date:   Fri Apr 22 17:20:48 2011 +0200

    add multiple .container at blueprint layout

commit 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22
Author: Luca G. Soave <luca.soave@gmail.com>
Date:   Thu Apr 21 19:55:57 2011 +0200

    add %h1 Fantastic Logo + .right for 'Sign …
Run Code Online (Sandbox Code Playgroud)

git github git-rebase git-revert git-reset

87
推荐指数
3
解决办法
3万
查看次数

推送后还原合并

我执行的步骤:

我有两个分支branch1和branch2,

$git branch --Initial state
$branch1

$git checkout branch2
$git pull origin branch1 --Step1
Run Code Online (Sandbox Code Playgroud)

我解决了冲突并做了一个

$git commit -m "Merge resolved"
Run Code Online (Sandbox Code Playgroud)

然后

$git checkout branch1
$git merge branch2
$git push origin branch1
Run Code Online (Sandbox Code Playgroud)

现在我意识到,在第1步,自动合并删除了一些代码,并且更改代码被推送,现在我想回到我的初始状态,以便还原任何更改.寻找一些直接的帮助?

git git-revert

62
推荐指数
4
解决办法
6万
查看次数

Visual Studio 2015 Git错误消息"无法拉/切,因为有未提交的更改"

我很难做到拉origin.我一直在:

"无法提取,因为存在未提交的更改.请在再次提取之前提交或撤消更改.有关详细信息,请参阅"输出"窗口.

这也适用于切换分支.我得到了类似的消息,但这并不总是发生.

我正在使用Visual Studio 2015 Update 1和Visual Studio Team Services Git.在我的机器上,我有一个本地master分支和开发分支.每次我切换到master然后我做拉,我得到错误信息.我已经采取了存储和删除存储(命令行),有时我使用TortoiseGit做拉,它的工作原理.

奇怪的是,即使我尝试使用TortoiseGit还原(在未提交的文件上)它表明它已成功还原(我已经尝试过Visual Studio撤消,没有任何反应).试图再次拉动,仍然是同样的问题.未提交的文件将存在,有时当我这样做时,git status它说没有什么可以提交的.

只需注意:即使从分支切换到也可能发生这种情况master.在这种情况下,无法进行未提交的更改,因为我无法在第一时间切换.

我还是Git的新手,但我想知道是否有更好的方法来解决这个问题,因为我想使用一个环境而不是在每个任务的不同环境之间切换; 我更容易从Visual Studio中完成所有工作.我已经读过了:

VS中的TFS/GIT无法切换到master,因为存在未提交的更改

UPDATE

看起来这个问题与行结尾有关.

通过执行a,git diff -R您可以看到已添加行结尾,"^ M",并且它是不同的.删除* text=autoin gitattributes(然后检查更改)并再次将其重新打开,以便gitattributes不会发出需要提交的自身更改信号似乎有帮助,不会有任何更改.

git-pull git-revert git-checkout visual-studio-2015 azure-devops

58
推荐指数
6
解决办法
6万
查看次数

如何恢复上次提交并将其从历史记录中删除?

我做了一个提交并且还原了

git revert HEAD^
Run Code Online (Sandbox Code Playgroud)

只是git日志

?  git:(master) git log
commit 45a0b1371e4705c4f875141232d7a97351f0ed8b
Author: Daniel Palacio <danpal@gmail.com>
Date:   Tue Jan 17 16:32:15 2012 -0800

    Production explanation
Run Code Online (Sandbox Code Playgroud)

但如果我做git log - 所有它仍然出现.我需要将其从历史中删除,因为它有敏感信息

git log --all
commit 5d44355080500ee6518f157c084f519da47b9391
Author: Daniel Palacio
Date:   Tue Jan 17 16:40:48 2012 -0800

    This commit has to be reset

commit 45a0b1371e4705c4f875141232d7a97351f0ed8b
Author: Daniel Palacio 
Date:   Tue Jan 17 16:32:15 2012 -0800

    Production explanation
Run Code Online (Sandbox Code Playgroud)

如何从历史记录中删除提交5d44355080500ee6518f157c084f519da47b9391?

git git-revert

52
推荐指数
5
解决办法
6万
查看次数

撤消git中的更改(不重写历史记录)

我在脚本中进行了更改并提交了它.然后我做了一些其他更改,并将它们推送到远程存储库等.

然后我意识到我提到的第一个更改是愚蠢的,并且想要撤消它.我可以"取消应用"提交,而无需手动复制/粘贴差异吗?

举个例子:我有两个文件,a.py并且b.py:

Commit 1:
I delete a function in a.py

Commit 2:
I change a few lines in b.py

Commit 3:
I change the docstring in a.py
Run Code Online (Sandbox Code Playgroud)

我可以撤消该功能删除,并使其显示为"提交4"(而不是删除提交1)

git git-revert

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

从git恢复特定提交

我有一个git树,有很多提交和很多文件.现在,我想恢复仅触及文件的特定提交.解释:

> git init
Initialized empty Git repository in /home/psankar/specific/.git/
> echo "File a" > a
> git add a ; git commit -m "File a"
[master (root-commit) 5267c21] File a
 1 file changed, 1 insertion(+)
 create mode 100644 a
> echo "File b" > b
> git add b; git commit -m "File b"
[master 7b560ae] File b
 1 file changed, 1 insertion(+)
 create mode 100644 b
> echo "File c" > c
> git add c; git commit …
Run Code Online (Sandbox Code Playgroud)

git github revert git-rebase git-revert

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

使用git reset --hard后无法推送更改

我有一个错误,并对git做了一些我不应该提交的更改.在我提交之后,我推动了我的更改.然后,我使用以下命令尝试重置我的更改.

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

现在我想使用此命令将此"重置"推送到远程存储库:

git push MyBranch
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误:

remote: error: denying non-fast-forward refs/heads/branch (you should pull first)
Run Code Online (Sandbox Code Playgroud)

我尝试使用此命令但没有成功:

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

知道我能做什么吗?

git git-revert

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