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

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


当前回答

您可以使用git reset unwanted_file命令您不想进入阶段的文件 。 通过使用此命令, 我们可以将更改的文件从中继区域移到工作目录 。

我如何在本地及远程解析 Git 承诺?

其他回答

使用 reflog 查找正确状态

git reflog

reflog before 安全前的路线

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

git reset --hard f3cb6e2

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

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

reflog after 谈判最后定本

使用此命令 :

git checkout -b old-state number_commit

如何修正上一个本地承诺

使用 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 reset --soft HEAD~1

或者如果你们记不起来,那末,你们可以使用

git rm --cached <file>

用于被推动的 承诺

从存储库历史中移除文件的正确方式正在使用git filter-branch。也就是说,

git filter-branch --index-filter 'git rm --cached <file>' HEAD

但我建议您谨慎使用此命令。 更多信息git-过滤器-分栏(1) 手册.

我想撤销我们共享存储库中最新的五个承诺。 我查了我想回溯到的订正代号 。 然后我输入了下面的内容 。

prompt> git reset --hard 5a7404742c85
HEAD is now at 5a74047 Added one more page to catalogue
prompt> git push origin master --force
Total 0 (delta 0), reused 0 (delta 0)
remote: bb/acl: neoneye is allowed. accepted payload.
To git@bitbucket.org:thecompany/prometheus.git
 + 09a6480...5a74047 master -> master (forced update)
prompt>