如何在git中移动master返回几个提交?

Hoy*_*man 21 git git-reset

我有一个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)


gri*_*tis 5

要指出母版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)