相关疑难解决方法(0)

如何恢复推送提交?

我们想要撤消最后 2 次都推送到原始主控的提交。在 tortoise git 中,我们可以查看历史记录,然后单击上次提交后的第 3 个,然后选择“将 master 重置为此”,我们猜测这意味着恢复到此版本。

但是,当您选择此选项时,您必须从以下三个选项之一中进行选择:

  1. soft - 保持工作树和索引不变。
  2. 混合 - 保持工作树不变,重置索引
  3. 硬重置工作树和索引。

不幸的是,我们不知道我们应该选择这 3 个选项中的哪一个 - 我们只想撤消最后两次提交并及时返回。

下一个问题是此操作是在远程源、您的存储库、您的工作目录还是这三者的组合上发生?例如,是否必须在还原后进行提交和推送,或者它是否为您执行此操作?

我们会猜测 HARD 是我们想要的 - 它会将存储库(不确定是哪个)和我们的本地源代码恢复到以前的版本。如果是这种情况,为什么这不是默认值,另外两个选项的用例是什么?要么你想恢复,要么不恢复,如果你只恢复远程仓库,而不是你的本地工作文件,那么你将处于混乱状态。

我们没有任何本地修改的文件。

请注意,我们非常渴望一个不会破坏 git 的解决方案(我们过去曾破坏过 git,不得不创建一个新的 repo)。也许另一种方法是可行的,例如检出以前的版本,然后在最新版本的顶部检入,但我们不知道如何执行此操作。

我们知道我们可以做这样的事情:

git checkout [revision]
Run Code Online (Sandbox Code Playgroud)

但是我们如何告诉 git 我们想要让这个版本成为新的 head 或者用这个替换 head 呢?我猜我们不能只提交,因为没有什么可提交的,因为我们不再是主人。顺便说一句,如果您查看上一个。版本,修改它,然后提交,你提交什么,提交到哪里?

我已经阅读了https://www.atlassian.com/git/tutorials/undoing-changes但它没有解决本地和远程 repos 之间的关系。如果要撤消的提交全部推送到远程源主机,则不清楚恢复远程源、本地存储库和工作目录的方法是什么——所有 3 项都必须恢复到 3 次提交之前的提交。我们真的不在乎这是通过重置还是还原来完成的——我们只需要一种方法来做到这一点,它适用于所有 3 个位置。

正确的接收方可能是这样的:

   git status (we are on master with a clean working dir)
   git git revert HEAD~2
   git commit -m "revert"
   git push origin …
Run Code Online (Sandbox Code Playgroud)

git tortoisegit

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

重置--soft和--mixed之间的区别

我是新来的git,并试图了解之间的差异git reset --softgit reset --mixed.我知道后者重置索引,而前者没有,但我试图理解材料的不同之处:我何时使用一个与另一个?

我已经阅读了这篇Stack Overflow帖子,这似乎表明它mixed有助于在重新提交之前进行一些更改,同时还soft可以简单地重新提交.我正在使用SourceTree,关闭了暂存窗格,并努力想知道为什么会这样; 我不能为我的生活看到任何实际的真正差异.

我能看到的唯一区别是,我重置的新添加的文件显示为添加了软重置,但混合不是这样.但在任何一种情况下,我都可以成功地对新添加的文件进行更改,然后重新提交.当然,我对现有文件所做的任何新更改都会无缝地添加到我当前未提交的更改中,随时可以提交.

我是否必须使用源树的暂存窗格来查看任何实际差异,或者我只是缺少某些东西?要清楚,现在我已经设置了工具,我看到了未提交的更改,我只需一步即可完成.

git dvcs

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

Git + Intellij - 如何还原本地提交?

使用git和intellij我意外地将我的更改发送到我的本地分支.

我想恢复提交,但保持更改像以前一样(准备下次提交).
我在这个页面中查看了如何恢复提交,但未能理解重置类型含义(混合/头/软).
我希望像以前一样进行所有更改,以便继续努力.

有什么帮助吗?

git intellij-idea

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

VS Code Git:恢复到特定提交

我正在使用 VS Code,想要返回到特定的提交 A。我目前位于 C:

A -> B -> C
Run Code Online (Sandbox Code Playgroud)

我上次提交的是 C,现在我想将所有文件设置回提交 A 时的状态。如何在 VS Code 中执行此操作?(如果需要的话,在 VS Code 中使用命令行也可以)-

git visual-studio-code

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