Git 操作笔记
退回到某个版本
1. 使用 git checkout
(暂时退回)
- 命令:
git checkout
- 例如:
git checkout abc1234
2. 使用 git reset
(永久回退)
- 保留工作目录的改动:
git reset --soft
- 回退提交并保留文件:
git reset --mixed
- 完全回退并删除改动:
git reset --hard
- 例如:
git reset --hard abc1234
3. 使用 git revert
- 生成新提交以恢复之前状态:
git revert
GitHub Push 被阻止
- 错误信息: 包含敏感信息(如API密钥)
- 解决步骤:
- 删除敏感信息: 从代码中移除并使用环境变量代替。
- 重写提交历史:
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch
" --prune-empty --tag-name-filter cat -- --all - 压缩存储空间:
git for-each-ref --format="delete %(refname)" refs/original | git update-ref --stdin git reflog expire --expire=now --all git gc --prune=now
- 重新提交:
git add
git commit -m "Remove sensitive information" - 强制推送:
git push --force
撤销已包含敏感信息的提交
1. 使用 git reset
- 命令回退到特定提交:
git reset --soft HEAD~2 # 取消上上的提交
2. 使用 git rebase
- 启动交互式 rebase:
git rebase -i HEAD~3
- 修改需要编辑的提交为
edit
,然后保存退出。 - 修改文件,提交更改:
git add
git commit --amend - 继续 rebase:
git rebase --continue
3. 强制推送修改后的历史
git push --force
小结
git checkout
: 临时回退,不影响提交历史。git reset
: 永久回退,可选择保留或丢弃改动。git revert
: 生成新提交以恢复无需丢失历史。- 在处理敏感信息时,务必删除和清理历史,并且进行强制推送。