我有一个git存储库,它拥有一个Drupal站点.我花了最后一天尝试使用几个不同的模块来构建一个功能.我放弃了目前的做法,决定尝试不同的模块组合.但是,我的存储库在主分支上有几个提交包含这个功能开发过程(我知道我没有以有效的方式分支.)我想摆脱最后的三个或四个提交并将master设置为我的历史(我不想将我目前的工作与任何东西合并,我只是想让它消失.)我该怎么做?
mer*_*011 48
为了在本地执行此操作,您可以执行以下命令以转到master并将其移动到旧提交.
git checkout master
git reset --hard <old_commit_id>
Run Code Online (Sandbox Code Playgroud)
如果您想将其推送到遥控器,则需要使用该-f选项.
git push -f origin master
Run Code Online (Sandbox Code Playgroud)
要指出母版3的提交,请执行以下操作:
$ git reset --hard master~3
Run Code Online (Sandbox Code Playgroud)
我建议在执行此操作之前备份当前的母版
$ git checkout -b master_backup
Run Code Online (Sandbox Code Playgroud)
移动母版后,查看您的提交树:
$ git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
Run Code Online (Sandbox Code Playgroud)