我想在引入错误时保存我的工作,并能够回到我以前的提交.我应该如何使用 git 来处理这个问题?



我的日志在最后 2 次提交中看起来像这样:

commit ABC
TEMP
commit DEF
Working!

我在DEF后做了一些事情,破坏了我的代码。 我不想丢失更改,所以我做了一个名为TEMP的提交。 然后我做了git checkout DEF -f,然后git status告诉我HEAD detached at DEF。当我执行日志命令时,我看不到我的 TEMP 提交。

我想做的是使用git restore(或其他命令(从ABC中获取每个修改的文件,一个接一个,直到找到罪魁祸首文件。然后我想删除或"剥离"ABC. 我来自 mercurary,您可以在其中删除提交。 我还没有推送到我的远程存储库,因为我不希望TEMP/ABC提交转到远程存储库。

我意识到我可能"以错误的方式"这样做,那么我应该如何处理我搞砸了某些东西的情况,我想回到上一次提交但保存我的更改,以便我可以逐个文件地抓取它们? 我认为有比像我一样创建TEMP提交更好的方法。

既然你没有推动,你可以(假设你没有任何正在进行的工作(

  • 重置 --难到工作提交
  • 列出"不工作"提交的文件
  • 逐个恢复它们,看看它何时中断

那是:

git switch master
git reset --hard DEF
git diff-tree --no-commit-id --name-only -r ABC
git restore -s ABC -SW -- afile

这使用新的 Git 2.23(2019 年 8 月(git restore命令。
以及新的git switch命令。

最新更新