git checkout -b dev <具体提交记录ID>
这个操作相当于git checkout -b dev + git reset --hard <具体提交ID>
git commit --amend,这个操作会把暂存区的改动附加到本地最新提交中,不会新增一条记录。但是,如果你目前本地最新的提交记录与远程仓库是同步的,你修改了本地的最新提交,git push是会失败的,因为与远程冲突了。
想要推送远程仓库可以用 git push -f。
-f 或 --force 选项进行强制推送会让本地仓库的历史记录完全覆盖远程仓库的历史。
强制回退到某个具体历史提交记录,即要删除它之后的所有提交,可以用 git reset 命令。
git reset --hard <目标提交的ID>git push origin <分支名称> -f。-f 或 --force 命令进行强制推送会让本地仓库的历史记录完全覆盖远程仓库的历史。
如果你不想在 master 分支上merge dev时保留 dev 分支的历史记录
可以使用 git merge --squash ,解决冲突后(如果有),手动提交本地仓库git commit -m "< >"。这样,只会在本地的 master 分支上新增一条提交记录。
注意这样会丢失dev分支的历史记录,如果dev的历史无关紧要,则可以这样做