我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。
我如何解除那些承诺?当地当地仓库?
我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。
我如何解除那些承诺?当地当地仓库?
当前回答
git reset HEAD@{n}
将重置您上一个n行动。
用于重设, 对于上一个动作, 使用git reset HEAD@{1}
.
其他回答
我更喜欢用git rebase -i
对于这份工作来说, 因为一份不错的清单 出现在我可以选择摆脱承诺的地方。 它可能不如这里的其他答案直接直接, 但是它只是...感觉右右.
选择要列出多少个承诺, 然后这样引用( 加入最后 3 个)
git rebase -i HEAD~3
样本列表
pick aa28ba7 Sanity check for RtmpSrv port
pick c26c541 RtmpSrv version option
pick 58d6909 Better URL decoding support
然后 Git 将删除任何您删除的线条 。
撤销一项承诺是有点吓人,如果你不知道它是如何运作的。 但如果你理解的话,它其实很容易。我会告诉你4种不同的方式, 你可以解除一项承诺。
说你们有这个,C是你们的总部,(F)是你们档案的状态。
(F)
A-B-C
↑
master
git reset --hard
您想要销毁C国罪行,并抛弃任何未承诺的变更。你这样做:
git reset --hard HEAD~1
结果是:
(F)
A-B
↑
master
现在B是总部,因为你用了--hard
中,您的文件在承诺 B 时被重置为状态。
git reset
也许C不是灾难,只是有点不对劲取消承诺,但保留您的更改在您做更好的承诺之前需要编辑一点。 从这里重新开始, C 做为您的总部 :
(F)
A-B-C
↑
master
做这个,离开--hard
:
git reset HEAD~1
在这种情况下,结果是:
(F)
A-B-C
↑
master
在这两种情况下,HEAD都只是最新承诺的指针。git reset HEAD~1
,您告诉 Git 将 HEAD 指针移回一个承诺。但(除非您使用)--hard
你把你的档案和以前一样留在原样,所以现在git status
显示您在 C 中检查过的更改。 您没有丢失任何东西 !
git reset --soft
最轻轻的触碰,你甚至可以取消您的承诺, 但要离开您的文件和文件指数指数指数指数:
git reset --soft HEAD~1
这不仅留下你的档案, 甚至离开你的指数指数指数指数当你独自一个人去的时候,git status
,你会看到相同的文件在索引中和以前一样。事实上,在这个命令之后,你可以做git commit
你会重蹈覆辙 做你刚做过的同样的事
git reset --hard
需要把密码拿回来还有一件事: 假设你销毁如在第一个示例中,但后来发现你需要它运气不好,对不对?
不,有仍为键入此
git reflog
你将看到一份(部分)承诺的清单,沙沙即你们所迁居的地方。你们要找出你们所摧毁的罪状,然后你们要这样做:
git checkout -b someNewBranchName shaYouDestroyed
承诺在Git不会在90天内被摧毁 所以你通常可以回去 拯救一个你本不想除掉的人
为了消除(所有变化)最后承诺、最后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 --soft HEAD~1
以上命令( 重置) 将把您当前的 HEAD 分支倒回指定的修改 。 在以上的例子中, 我们想回到当前修改前的修改中, 有效地取消我们上次的修改 。
注注:--soft
旗帜 : 这样可以确保未撤销修改中的更改被保存。 在运行命令后, 您会发现这些更改是您工作副本中未承诺的本地修改 。
如果您不想保留这些修改,只需使用--hard
。确保只在确定不再需要这些更改时才这样做。
$ git reset --hard HEAD~1
简单的分步骤指南如下:
git reset --hard HEAD~1
git reset HEAD~1
git reset --soft HEAD~1
git reflog #to find the sh