我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。
我如何解除那些承诺?当地当地仓库?
我无意间把错误的档案 写错给Git 基特,但还没有将承诺推进到服务器上。
我如何解除那些承诺?当地当地仓库?
当前回答
先决条件:当修改您存储库中的现有文件时,该修改最初被视为未阶段。为了实施修改,需要分阶段进行,这意味着使用索引
git add
。在一次任务操作中,被筛选的文件会被添加到索引中。
让我们举一个例子:
- A - B - C (master)
HEAD
点点到C
与索引匹配C
.
git reset --soft B
有意并打算删除承诺 C和将主控/ HEAD 指向 B. git status
您可以看到索引中的文件承诺 C计为阶段d. git commit
到此点将创建新承诺与C相同的变化git reset --mixed B
. git add
然后如往常地实践。git reset --hard B
希望这种对可供使用的旗帜的比较git reset
命令会帮助某人明智地使用它们。请参考这些以获取更多细节链接1 & 链接2
其他回答
使用 reflog 查找正确状态
git reflog
安全前的路线
选择正确的 reflog( 以我为例, f3cb6e2) 和类型
git reset --hard f3cb6e2
在那之后,重置的总部将重新设置为重置的总部。
冲突后的讲解
最终, 折叠图看起来像下面的图片
谈判最后定本
每次我需要撤销承诺/承诺时,我要做的是:
git reset HEAD~<n>
/ 上次承诺的数量, 我需要撤销
git status
/ 可选。 所有文件现在都红色( 未预设 ) 。
现在,我可以添加并只承诺我所需要的文件 :
git add <file names> & git commit -m "message" -m "details"
git checkout <filename>
git push origin <branch name> -f
用 -f来强迫推简单的分步骤指南如下:
git reset --hard HEAD~1
git reset HEAD~1
git reset --soft HEAD~1
git reflog #to find the sh
在我的案子中,我无意中犯了一些我不想犯的案卷。所以我做了以下的,它奏效了:
git reset --soft HEAD^
git rm --cached [files you do not need]
git add [files you need]
git commit -c ORIG_HEAD
用 gitk 或 git 日志 -- stat 校验结果
我想撤销我们共享存储库中最新的五个承诺。 我查了我想回溯到的订正代号 。 然后我输入了下面的内容 。
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>