我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。

我如何解除那些承诺?当地当地仓库?


当前回答

使用 reflog 查找正确状态

git reflog

reflog before 安全前的路线

选择正确的 reflog( 以我为例, f3cb6e2) 和类型

git reset --hard f3cb6e2

在那之后,重置的总部将重新设置为重置的总部。reset effect 冲突后的讲解

最终, 折叠图看起来像下面的图片

reflog after 谈判最后定本

其他回答

如果您想要永久撤销它, 您克隆了一些仓库 。

犯罪身份可通过以下方式识别:

git log 

然后你们可以做:

git reset --hard <commit_id>

git push origin <branch_name> -f

git 重置 -- 混集、 -- soft 和 -- hard 的区别

先决条件:当修改您存储库中的现有文件时,该修改最初被视为未阶段。为了实施修改,需要分阶段进行,这意味着使用索引git add。在一次任务操作中,被筛选的文件会被添加到索引中。

让我们举一个例子:

- A - B - C (master)

HEAD点点到C与索引匹配C.

-- 软

  • 当我们执行时git reset --soft B有意并打算删除承诺 C将主控/ HEAD 指向 B.
  • 主人/总部现在将指向B,但指向B指数与C指数仍有变化.
  • 执行时执行时git status您可以看到索引中的文件承诺 C计为阶段d.
  • 执行git commit到此点将创建新承诺与C相同的变化

-- 混合混合

  • 执行执行git reset --mixed B.
  • 执行时,主/主/总部领导将指B和B也修改索引以匹配 B原因是使用了混合国旗。
  • 如果我们在这一点上运行git承诺, 没有什么会发生,因为与 HEAD 的索引匹配.
  • 工作目录里还有变化 但是既然不在索引里git 状态显示为未阶段状态.
  • 承诺他们,你会git add然后如往常地实践。

--- 硬

  • 执行执行git reset --hard B
  • 执行时,主/总部主/总部将指B修改工作目录
  • 缩略C 中添加的更改全部未承诺的更改已删除.
  • 工作副本中的文件将与承诺 B 匹配, 这将导致永久删除在承诺 C 和 未承诺的更改中所做的所有更改

希望这种对可供使用的旗帜的比较git reset命令会帮助某人明智地使用它们。请参考这些以获取更多细节链接1 & 链接2

认为我们有code.txt 代码转换器。我们对其文件进行一些修改并做出承诺。我们可以以三种方式撤销这一承诺,但首先你应该知道什么是阶段文件...git status此文件将以绿色颜色显示, 如果此文件没有被预设用于承诺, 则会以红色显示 :

enter image description here

意思是,如果您进行更改,此文件中的更改就不会保存。 您可以在您的舞台上添加此文件git add code.txt然后承诺更改:

enter image description here

撤消上次承诺 :

  1. 如果我们想要在不做任何其他更改的情况下撤销承诺,

    git reset --soft HEAD^

    enter image description here

  2. 如果我们想要撤销承诺及其变化( ) 。这是危险的,因为你的改变会失去),我们可以使用

    git reset --hard HEAD^

    enter image description here

  3. 如果我们想要撤销承诺,从舞台上删除变化, 我们可以使用

    git reset --mixed HEAD^或以短或短形式git reset HEAD^

    enter image description here

如何修正上一个本地承诺

使用 git- gui (或类似) 执行git commit --amend。从 GUI 中,您可以从承诺中添加或删除单个文件。您也可以修改承诺信件。

如何撤销上一个本地任务

仅将分支重新设置为上一个位置(例如,使用gitkgit rebase) 。然后从保存的副本中重新应用您的更改。在您本地仓库的垃圾回收收集后,它会像没有发生不想要的操作一样。要用一个命令来完成所有这些,请使用git reset HEAD~1.

警告单词: 粗心使用git reset我建议基特新手们尽可能避免这样做。

如何撤销公开承诺

表演a逆向樱桃摘 (git- rever 反转)来撤销更改。

如果你还没有在你的分支上做其他的修改, 你可以简单地做。 。 。

git revert --no-edit HEAD

然后将更新的分支推至共享仓库 。

承诺历史将分别显示两个承诺.


高级:校正私立公共存储库分支

这可能很危险 -- -- 请确定您有该分支的本地副本要反射 。

备注:如果有其他人在为分支工作,您不想这样做。

git push --delete (branch_name) ## remove public version of branch

清理你的分行 在当地,然后冲...

git push origin (branch_name)

通常情况下,你可能不必担心你的私人部门 将历史变成原始历史。只是催促后续承诺(见上文“如何撤销公共承诺”),然后,做一个壁球- 合并隐藏历史。

您可以使用git revert <commit-id>.

为了得到身份证明 只需使用git log.