Files
mkdocs/docs/git/Git add . 后如何撤销.md
2026-01-13 11:12:42 +08:00

4.5 KiB
Raw Blame History

Git add . 后如何撤销

在Git中撤销git add .操作有以下几种常用方法:

撤销所有暂存文件:

使用git reset命令git reset会将所有暂存文件移回工作区

使用git restore命令Git 2.23+git restore --staged .效果相同

撤销特定文件的暂存:

对单个文件git reset HEAD <文件名> 或 git restore --staged <文件名>

对多个文件:可以指定多个文件名或用通配符

完全撤销修改(慎用):

git checkout -- <文件名>会丢弃工作区修改

git reset --hard会丢弃所有未提交的修改

已commit的撤销

使用git revert创建反向提交

使用git reset --hard 回退到指定提交

注意事项:

这些操作只会影响暂存区,不会删除文件本身

执行前建议先用git status确认文件状态

对已push的commit进行撤销需谨慎可能影响协作

如何回退git commit .

在Git中回退git commit .操作有以下几种常用方法,具体选择取决于是否需要保留修改或是否已推送到远程仓库:

撤销最近一次commit但保留修改

git reset --soft HEAD~1撤销commit但保留所有更改在暂存区

git reset HEAD~1默认--mixed模式撤销commit并将更改移回工作区

完全撤销commit及修改

git reset --hard HEAD~1彻底删除最后一次提交及其所有更改不可逆操作

针对已push的commit

先本地执行git reset回退

再使用git push -f强制覆盖远程分支慎用会影响协作

安全撤销方式(保留历史):

git revert HEAD创建新提交来撤销前一次提交的更改

可指定具体commit哈希git revert

交互式修改历史:

git rebase -i HEAD~n可编辑最近n次提交记录

在交互界面中将目标commit前的"pick"改为"drop"即可删除

操作建议:

先用git log查看提交历史确认要回退的commit

未push的commit优先使用git reset

已push的commit建议使用git revert避免历史冲突

重要修改前建议创建备份分支

要删除git分支

在Git中删除分支分为本地分支和远程分支两种情况以下是具体操作方法

删除本地分支:

安全删除已合并的分支git branch -d <branch_name>

强制删除未合并的分支git branch -D <branch_name>

删除前需确保不在目标分支上可通过git checkout <other_branch>切换分支

删除远程分支:

现代Git版本git push <remote_name> --delete <branch_name>(推荐)

兼容旧版本git push <remote_name> :<branch_name>

远程仓库名通常为origin

同步操作:

删除远程分支后其他机器需执行git fetch --all --prune清除过时的远程跟踪分支

可通过git branch -a验证删除结果

注意事项:

删除分支前建议确认分支内容已合并或备份

强制删除(-D会丢失未合并的修改需谨慎使用

当前所在分支无法被删除

如何放弃本分支中未提交的所有修改

以下是放弃当前分支所有未提交修改的完整方法,根据修改状态分类处理:

一、未暂存的修改未执行git add

放弃单个文件修改:

bash

Copy Code

git checkout -- <文件名>

放弃所有文件修改:

bash

Copy Code

git checkout .

此操作会永久丢弃工作区所有未暂存的修改

二、已暂存未提交的修改执行过git add

撤销单个文件暂存(保留工作区修改):

bash

Copy Code

git reset HEAD <文件名>

撤销所有暂存(保留工作区修改):

bash

Copy Code

git reset HEAD

彻底丢弃暂存区和工作区修改:

bash

Copy Code

git reset --hard HEAD

该操作会同步清除暂存区和工作区

三、包含未跟踪文件的情况

清除所有未跟踪文件需配合git reset使用

bash

Copy Code

git clean -df

-d 同时删除未跟踪目录

-f 强制执行

四、临时保存修改(可恢复)

存储当前修改到堆栈:

bash

Copy Code

git stash

彻底丢弃最近一次存储:

bash

Copy Code

git stash drop

查看所有存储记录:

bash

Copy Code

git stash list



注意事项:

所有--hard和clean操作不可逆建议先执行git status确认修改内容
若需保留修改但切换分支优先使用git stash方案
已提交的修改需使用git reset --hard <commit>回退到指定版本