我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。

我如何从当地存储库撤销这些承诺?


当前回答

使用此命令

git checkout -b old-state 0d1d7fc32

其他回答

另一种方式:

检查您想要返回的分支, 然后将本地工作副本重置到您想要在远程服务器上成为最新一份的承诺( 它将在离别后进行的一切) 。 要做到这一点, 请在 SupportTree I右键点击并选中的“ 重置 BranchNAME 以进行此承诺 ” 。

然后导航到仓库的本地目录并运行此命令 :

git -c diff.mnemonicprefix=false -c core.quotepath=false push -v -f --tags REPOSITORY_NAME BRANCHNAME:BRANCHNAME

这将删除您本地仓库中当前一个后的所有承诺, 但只删除该分支 。

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

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>

当地承诺

git reset --soft HEAD~1

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

git rm --cached <file>

用于被推动的 承诺

从存储库历史中删除文件的适当方式是使用 git 过滤器- blanch 。 也就是说,

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

但我建议您谨慎使用此命令 。 更多信息请访问 git- filter- branch- blanch- 1 手册页面 。

#1) $ git commit -m "Something terribly misguided" 
#2) $ git reset HEAD~                              

[必要时编辑文件]

 #3) $ git add .
#4) $ git commit -c ORIG_HEAD  

如何修正上一个本地承诺

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

如何撤销上一个本地任务

只需将分支重置到上一个位置( 例如, 使用 gitk 或 git 重新基准 ) 即可。 然后重新应用保存的副本中的更改 。 在本地仓库收集垃圾后, 它会像未发生不想要的操作一样。 要在单一个命令中完成所有这些, 请使用 git 重置 HEAD~ 1 。

警告的话: 粗心使用 Git 重置是一个很好的方法, 让你的工作副本陷入混乱状态 。 我建议Git Novice 尽量避免这种情况 。

如何撤销公开承诺

执行反向樱桃选取( git- revert) 以撤销更改 。

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

git revert --no-edit HEAD

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

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


高级:对公共储存库中的私营分支机构的更正

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

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

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

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

git push origin (branch_name)

通常情况下, 您可能不需要担心您的私人部门 将历史变为原始历史。 只要催促后续承诺( 参见上面的“ 如何撤销公共承诺 ” ) , 然后再做壁球合并来隐藏历史 。