我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
我无意中把错误的文件给了Git, 但还没有把承诺推到服务器上。
我如何从当地存储库撤销这些承诺?
当前回答
如果您只是想要丢弃所有本地更改/ 承诺, 使您的本地分支看起来像您从... 开始的源分支...
git reset --hard origin/branch-name
其他回答
引用: 如何撤销 Git 中的最后一次承诺 ?
如果您已经安装了 Git 扩展名, 您可以很容易撤销/ 撤销任何任务( 您可以从这里下载 Git 扩展名 ) 。
打开 Git 扩展名, 右键单击您想要返回的承诺, 然后选择“ 回溯承诺 ” 。
调
将打开弹出( 见下文截图)
调
选择“自动创建一项承诺”,如果您想要直接进行已恢复的更改,或者如果您想要手动进行已恢复的更改,则保留未选中的框,单击“撤销此承诺”按钮。
添加/删除文件, 以便按照您想要的方式获取文件 :
git rm classdir
git add sourcedir
然后修正承诺:
git commit --amend
之前的错误承诺将会被编辑 以反映新的指数状态 换句话说,这就像你从未犯过错误一样
请注意,你只应该在还没有推的时候做这个。如果你已经推了,那么你只需要正常地做一个修正。
git reset --soft HEAD~1
git status
Output
在分支母版上, 您的分支比“ 来源/ 主机” 提前 1 承诺 。 (使用“ 给予推” 来发布您的本地承诺) 更改要执行 : (使用“ 给予恢复 - 级... ” 到 取消阶段) 新文件 : 文件 1 。
git log --oneline --graph
Output
90f8bb1 (HEAD - > master) 第二次承诺\ 7083e29 初始仓库承诺\
当地承诺
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 手册页面 。
简单, 在命令行运行此操作 :
git reset --soft HEAD~