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

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


当前回答

为了消除(所有变化)最后承诺、最后2承诺和最后n承诺:

git reset --hard HEAD~1
git reset --hard HEAD~2
...
git reset --hard HEAD~n

在做出具体承诺后,要消除任何东西:

git reset --hard <commit sha>

例如,

git reset --hard 0d12345

谨慎使用硬选项 : 它会同时删除您回购的本地更改, 并返回到上一个提及的承诺 。 您只应该运行此选项, 前提是您确定您在最后一次承诺中搞砸了, 并且想要回到过去 。

作为副注释,大约7个承诺的散列字母就足够了,但在更大的项目中,你可能需要最多12个字母才能独有。如果您愿意,也可以使用整个承诺的 SHA 。

上述命令在GitHub也为Windows服务。

其他回答

尝试此选项, 硬重置到未添加文件的上一个任务, 然后 :

git reset --hard <commit_hash>

确保您有备份的更改, 以防万一, 因为它是一个困难的重置, 这意味着它们会丢失( 除非您更早隐藏) 。

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

替换您的本地版本, 包括您对服务器版本的更改。 这两行代码将迫使 Git 调用并覆盖本地版 。

打开命令提示并导航到 Git 工程根 。 如果您使用视觉工作室, 请单击小组小组, 同步同步并点击下面的“打开命令提示”(见图像) 。

Visual Studio

一旦进入CMD, 继续使用以下两个指示。

git fetch --all

那你就做

git reset --hard origin/master

这将覆盖 Git 服务器上的现有本地版本 。

与您一起工作的人源树树这会帮助你。

右单击右键在那日,选定 "重置( 当前分支)/ master 用于此承诺" 和上一个选定 “ 软” 重置.

Enter image description here

git push --delete (branch_name) //this will be removing the public version of your branch

git push origin (branch_name) //This will add the previous version back