diff/apply方案
使用diff命令生成patch文件,后使用apply命令应用patch到分支,从而实现修改复刻。
生成补丁
git diff > commit.patch
检查补丁
git apply --check commit.patch
应用补丁
git apply commit.patch
git diff --cached > commit.patch
生成最近1次commit的patch
git format-patch HEAD^
生成最近2次commit的patch
git format-patch HEAD^^
生成单个提交的patch
git log
git format-patch [commit-id] -1
git format-patch 51d4aa97aaffd754eb7412ff87a3c9ba1fa30006 -1
撤销最近一次本地提交
git reset HEAD~
git reset --soft "3fed8d862292d7c0415c97a960b1aca39b138ed3"
git reflog //显示可引用的历史版本记录,找到要撤回的commit的前面的
git reset --hard commit_id //恢复到这次修改
git push origin HEAD --force //将本地分支代码强制推送到远处分支
撤销最近一次提交但保留更改
git reset --soft HEAD~1
撤销最近一次提交并丢弃更改
git reset --hard HEAD~1
撤销特定的提交
git revert <commit-hash>
修改最近一次提交
git commit --amend
撤销已经推送到远程仓库的提交(使用git revert或谨慎使用git push --force)
想彻底删除 Git 中的某次提交的内容,可以使用git rebase命令并将该提交删除
也不会在git log中保留,可以撤销中间某次提交,撤销提交
git log
git rebase -i commit_id //进入vim编辑模式,把要删除的commit的前面的pick改为drop
git push origin HEAD --force //推到远程分支上
回退版本,并强制提交
git log
git reset --hard 25843279fa4c619d2513f181117bc5394b10509f
git push origin dev --force
git reset --hard 0e35fdffc3ce33b1979ed3c8f55554933fbbe991
git push origin master --force