- 从某次commit处切出新分支
git log (为了获取commitId)
git checkout <commit_id> -b
- 将某次commit从一个分支(A)转移到另一个分支(B)
切到A分支 git log 获取到commitId
切回B分支:git checkout B
执行:git cherry-pick <commit_id>
- 修改 commit 注释内容
git commit --amend (此时会进入默认vim编辑器,修改注释完毕后保存就好了)
git 回退
- 暂存区(git add 之后还未 git commit)
git reset HEAD .
或者
git reset HEAD <指定文件>
- 本地分支(commit 后还未 push)
git reset --hard <commit_id> (回到其中你想要的某个版)
或者
git reset --hard HEAD^ ( 回到最新的一次提交)
或者
git reset HEAD^ ( 此时代码保留,回到 git add 之前)
- 推到远程(本地分支修改好后)
git push origin HEAD --force 强制提交一次,之前错误的提交就从远程仓库删除
revert
- 通过git revert是用一次新的commit来回滚之前的commit
git log (得到你需要回退一次提交的commit id)
git revert <commit_id> ( 撤销指定的版本,撤销也会作为一次提交进行保存)
- git revert 和 git reset的区别:
git revert是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留;
git reset是回到某次提交,提交及之前的commit都会被保留,但是此commit id之后的修改都会被删除