标签: git-revert

Git:使用还原或结帐撤消推送的更改?

Git是一个非凡的工具,但我还没有把我的思想包围在撤消推动变更的最佳方法上.这是情况.

我在一个分支上,已经向GitHub推送了几个提交.从那时起我就决定在兔子洞里走得太远了,我们需要废弃几件已经完成的工作,然后重新开始.从本质上讲,我需要将所有推送的提交撤回到前一个提交.以下是我认为合适的两个命令

git revert  # - creates a new commit that "undoes" the changes of one specific commit
git checkout 'commit SHA' # - sets the head to that specific commit, wherein I will re-push to the repo, undoing my changes... I think
Run Code Online (Sandbox Code Playgroud)

所以,我是对的吗?我是否需要对要返回的特定提交进行git checkout?或者这个错综复杂的过程中有什么我不理解的东西?

谢谢.

git git-revert git-checkout

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

忽略合并期间恢复的更改

我的提交树描述如下:

--(+A)--(+B)-+-(-B)--(+E)--(master: AE)
              \
               +--(+C)--(+D)--(branch: ABCD)
Run Code Online (Sandbox Code Playgroud)

一些更改已在master中恢复。我们需要将分支中的更改合并到分支,以恢复已恢复的提交。

是否存在一步法?或者只有一种方法是在合并分支之前掌握樱桃选择(B)?

PS Final master必须如下所示:(ABCDE) - 顺序并不重要

git git-merge git-revert

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

当我使用提交哈希时,为什么git revert告诉我"修改不好"?

我试图恢复到早期的git提交,但得到错误"错误修订".为什么?

这是一个成绩单(删除了作者姓名):

Ellen@ELLEN-PC /c/Users/Susan Mills/git/hello-github (master)
$ git status
# On branch master
nothing to commit, working directory clean

Ellen@ELLEN-PC /c/Users/Susan Mills/git/hello-github (master)
$ git log | head
commit e3eb30cc7ca6d4cd10de755b63821cad75da1e83
Date:   Wed Feb 5 17:54:32 2014 -0800

    I changed my greeting.

commit 063ac580e28bab524286dac7b0a8f88d9e7d365f
Date:   Mon Feb 3 07:53:19 2014 -0800

Ellen@ELLEN-PC /c/Users/Susan Mills/git/hello-github (master)
$ git revert 9e7d365f
fatal: bad revision '9e7d365f'
Run Code Online (Sandbox Code Playgroud)

为什么我会得到"糟糕的修改",我该怎么办?我git bash在Windows 7上使用我的起源于github.

git git-revert git-commit

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

git revert:在实际还原之前是否可以识别可能存在冲突的提交?

有没有办法识别特定提交的"附带"提交(编辑相同行并将导致冲突的提交)?

一个非常简单的例子

$ git init
$ echo test > test
$ git add test
$ git commit -m "First commit"
$ echo test1 > test
$ git commit -am "Second commit"
$ git l
* 95a29dd Second commit
* 30a68e6 First commit
$ type test
test1
Run Code Online (Sandbox Code Playgroud)

假设在这一点上无论出于何种原因我想要恢复30a68e6.

$ git revert 30a68e6
error: could not revert 30a68e6... First commit
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and …
Run Code Online (Sandbox Code Playgroud)

git git-revert

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

撤消推送到文件的更改

我最近在远程存储库中推送了项目更改的提交。我刚刚发现我通常不提交更改的文件之一被包含在内,因为它可能包含敏感信息。

我想撤消对该文件的提交更改(到最后一个状态),而不丢失其他文件中提交的更改。

由此:

  • 更改文件敏感 -- ++
  • 更改文件1
  • 更改文件2
  • 新文件3
  • 新文件4

对此:

  • 更改文件1
  • 更改文件2
  • 新文件3
  • 新文件4

目前,只有我有权访问该存储库,因此重写历史记录没有问题,因此当我授予对该远程存储库的访问权限时,他们不会在历史记录中看到敏感信息。那么,我该怎么做呢?

git git-revert git-reset

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

如何恢复在 Git 上完成的最后 2 次提交

我在这里遇到的情况是,另一个合作者完成了 2 次提交,这似乎是错误的文件。我是存储库的所有者,并希望恢复由其他合作者完成的 2 次提交。从我的终端,我尝试了以下操作。

git log -2它只是说我所做的最后 2 次提交。我想知道如何重置最后 2 个提交并将 HEAD 更改为那些 2 个之前的提交。

git git-revert

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

为什么git revert会产生冲突?

我有以下承诺

\n\n
dd9e52bafac5fa427ed64c5d9cf08015fa804ed4 Added Line 3\na000427a4c70781d0bed7b31f56f290ac1d636b7 Added Line 2\n20baa578ae205768639620749f53bd318e329e73 Added Line 1\n7c043a104394ba4ba5a2fb29d4526de50b7d12be Created file.txt\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  • 在提交 7c04 我创建了一个名为 file.txt 的空白文件
  • \n
  • 在提交 20ba 时,我将文本 \xe2\x80\x9cLine 1\xe2\x80\x9d 添加到文件中
  • \n
  • 在提交 a000 时,我将文本 \xe2\x80\x9cLine 2\xe2\x80\x9d 添加到文件中
  • \n
  • 在提交 dd9e 时,我将文本 \xe2\x80\x9cLine 3\xe2\x80\x9d 添加到文件中
  • \n
\n\n

在提交 dd9e 时,file.txt 现在读取

\n\n
Line 1\nLine 2\nLine 3\n
Run Code Online (Sandbox Code Playgroud)\n\n

Head 和 master 指向最后一次提交(dd9e)。

\n\n

如果我运行 git 命令

\n\n
git revert 20baa\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人告诉我

\n\n
error: could not revert 20baa57... Added Line 1\nhint: after resolving the …
Run Code Online (Sandbox Code Playgroud)

git revert git-revert

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

git恢复后,合并显示没有更改并且已经更新

我有一个dev它已经与分支合并的分支featureAfeatureB。我将该dev分支合并到master并推到远程。后来我确定由于提交错误featureB而尚未准备好与之合并master。所以我恢复了dev->的合并 master

git revert -m 1 <merge-commit-hash>
Run Code Online (Sandbox Code Playgroud)

然后我试图合并featureAmaster。但是我不能合并。它会说Already up to date

我知道莱纳斯·托瓦尔兹(Linus Torvalds)所说的原因,

Linus解释了这种情况:

恢复常规提交只会有效地撤消该提交所做的操作,并且非常简单。但是,还原合并提交也会撤消提交更改的数据,但是对合并所产生的历史记录的影响绝对没有任何作用。

因此,合并仍将存在,并且仍将其视为将两个分支结合在一起,并且将来的合并将把合并视为最后一个共享状态-还原引入的合并的还原将完全不影响此状态。

因此,通过“还原”撤销数据的变化,但是这是非常没有在这个意义上,它不会取消的影响对信息库历史提交的“撤销”。

因此,如果您将“还原”视为“撤消”,那么您将总是会错过这部分还原。是的,它撤消数据,但是不,它不会撤消历史记录。

在这种情况下,只有将其dev再次合并的解决方案masterrevert the revert commit。但是我只想合并分支中包含的一个dev分支,即featureA

如何将分支(featureA)合并到master包含在还原的合并分支(dev)中的主线分支()?

git git-merge git-revert git-remote gitlab

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

如何撤消合并请求及其提交?

我在 gitlab 上merge request对我的分支做了一个develop。然后我意识到我犯了一个巨大的错误。我迅速按下revert按钮,我觉得一切都好,其实不是。Gitlab 只revert进行了提交。在日志中仍然有来自源分支的提交。它会导致许多版本问题。是否有任何解决方案可以在 gitlab 平台上恢复单个合并请求并从许多不需要的提交中清除分支日志。我希望我的分支就像这个合并请求从来没有地方一样。

git git-merge git-revert gitlab

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

在Android Studio 3.3.1的Github中使用“还原”时,为什么不能回滚到某个点?

我提交并推送我的代码3次,分别是Submit 1,Submit 2和Submit 3。

我希望将我的代码回滚到Submit 2并将其推送到远程存储库。

因此,我对“提交2”点(请参阅图像“ 执行还原”),“文件与冲突合并”对话框显示(请参见图像文件合并)和“合并”的子对话框进行了还原操作,就像图像“合并的孩子”一样

答:我不明白为什么执行还原操作时会显示以下代码?看来系统已准备好所有历史记录提交记录以让我合并。

<<<<<<< HEAD
//Submit 3
=======
//Submit 1
>>>>>>> parent of 86821fc... Submit 2
Run Code Online (Sandbox Code Playgroud)

B:而且,无论我选择接受,接受还是合并...命令,我都无法得到正确的结果(将代码回滚到Submit 2)。为什么?

C:如果启动“合并...”操作,系​​统将如何处理?

提交1 在此处输入图片说明

提交2 在此处输入图片说明

提交3 在此处输入图片说明

还原 在此处输入图片说明

合并文件 在此处输入图片说明

合并之子 在此处输入图片说明

git github git-revert git-reset android-studio

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