1.撤回一个提交
如果已经提交一个记录后悔了,想把这条记录撤回有两种方式
1.1 revert方式
使用 git revert 撤回提交:git revert 创建一个新的提交来撤销指定提交的更改,并保留这个撤销操作的历史记录。这是一个安全的方法,因为它不会改变提交历史。 例如,要撤回最新的提交,可以执行以下命令:
git revert HEAD
推送至远程仓库:
git push
1.2 reset方式
使用 git reset 撤回提交: git reset 可以用来移动分支的指针来撤销提交,并且可以通过不同的选项控制撤回的程度。需要注意的是,使用 git reset 可能会改变提交历史,只有在你明确知道后续操作的影响时使用。
如果你只是想撤回最新的提交并丢弃更改,可以执行以下命令:
git reset --hard HEAD^
如果你希望撤回最新的提交但保留更改作为未提交的更改,可以执行以下命令:
git reset --soft HEAD^
推送远程仓库:
git push --force #注意:你可能没有强制推送的权限而导致推送失败
2.修改某次提交
2.1修改最后一次提交
这个简单,使用一个命令就可以了
git commit --amend 对最近一次的commit信息进行修改 会修改commitId
如果你已经推(push)了这次提交(commit), 你可以修改这次提交(commit)然后强推(force push), 但是不推荐这么做。
我提交(commit)里的用户名和邮箱不对 如果这只是单个提交(commit),修改它:
$ git commit --amend --author "New Authorname <authoremail@mydomain.com>"
如果你需要修改所有历史, 参考 'git filter-branch'的指南页.
2.2我想从一个提交(commit)里移除一个文件
git checkout commitId myfile
git add -A
git commit --amend
git push --force
2.3删除任意提交(commit)
同样的警告:不到万不得已的时候不要这么做.
git rebase --onto SHA1_OF_BAD_COMMIT^ SHA1_OF_BAD_COMMIT
git push -f [remote] [branch]
或者做一个 交互式rebase 删除那些你想要删除的提交(commit)里所对应的行。
2.4我意外的做了一次硬重置(hard reset),我想找回我的内容
如果你意外的做了 git reset --hard, 你通常能找回你的提交(commit), 因为Git对每件事都会有日志,且都会保存几天。
git reflog
你将会看到一个你过去提交(commit)的列表, 和一个重置的提交。选择你想要回到的提交(commit)的SHA,再重置一次:
git reset --hard SHA1234
这样就完成了。