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 addgit 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 addgit commit --amend - 继续 rebase:
git rebase --continue
3. 强制推送修改后的历史
git push --force
小结
git checkout: 临时回退,不影响提交历史。git reset: 永久回退,可选择保留或丢弃改动。git revert: 生成新提交以恢复无需丢失历史。- 在处理敏感信息时,务必删除和清理历史,并且进行强制推送。