git log --oneline
结果示例:
c1d3a72 (HEAD -> main) 修复楼层映射界面逻辑 a5b4c11 增加批量导入功能 a14de22 初次提交
git reset --hard c1d3a72
git add . git commit -m "提交备注"
git push
搜 Post,输入:
call ./del.bat
然后在根目录放一个 del.bat 文件,文件格式 UTF-8。
内容如下,自己看着改:
del ".\bin\Debug\net48\xxx.dll" del ".\bin\Debug\net48\ccc.dll"
当你使用 git reset 回滚版本后,工作区可能仍保留着新版本中创建但旧版本中不存在的文件(即“未追踪的文件”)。要彻底清理这些多余文件,只保留当前版本的代码,你需要使用 git clean 命令。
首先,确保你的已追踪文件(Tracked Files)已经强制重置到了目标版本。
# 注意:--hard 会丢弃所有未提交的修改 git reset --hard <你的目标CommitID>
git clean 用于从工作区中删除未被追踪的文件。
在真正删除之前,先查看一下哪些文件会被删除,防止误删重要的配置文件(如 .env 或 IDE 配置)。
git clean -nfd
确认上面的列表没问题后,执行以下命令。这将删除多余代码,但保留 .gitignore 中忽略的文件(如编译缓存、依赖包)。
git clean -fd
如果你想让项目回到“刚 Clone 下来”的纯净状态,连同编译生成的文件(Ignored files)一起删掉:
git clean -fdx
.gitignore 忽略的文件。node_modules),执行后通常需要重新 build。本指南介绍如何强制将本地仓库重置为与远端 `master` 分支完全一致的状态。
警告: 执行此操作将永久丢失所有未提交(Uncommitted)的更改以及本地已经提交但未推送到远端的更改。请在执行前确保你不需要保留这些更改,或者已经做好了备份。
要强制覆盖本地更改,我们需要分两步走:首先从远端获取最新信息,然后强制重置本地分支。
首先,我们需要从远端仓库(通常命名为 `origin`)下载最新的分支信息,但暂时不合并到本地。
git fetch --all
接下来,我们将本地的 `master` 分支指针强制移动到远端的 `origin/master` 位置。
git reset --hard origin/master
上述 `reset –hard` 命令只会影响 Git 追踪的文件。如果你在本地创建了新文件(Git 未追踪的文件),它们仍然会存在。如果你想让目录变得完全干净(和刚克隆下来一样),可以运行以下命令:
git clean -fdx
你可以将这些命令组合成一个序列快速执行:
git fetch --all git reset --hard origin/master # 慎用下面这行,除非你确定要删除所有未追踪文件 # git clean -fdx
git reset --hard origin/main
场景描述: 你当前处于 A 分支。你希望 B 分支 的内容变得和 A 分支一模一样(完全丢弃 B 分支旧有的差异),操作完成后,自动切换到 B 分支 继续工作。
这通常用于重置某个测试分支,或者强制同步代码。
这种方法会将 B 分支的指针直接指向 A 分支当前的提交,这是最彻底的“一模一样”。
步骤如下:
# 1. 确认当前所在分支 (假设显示 * A) git branch # 2. 如果 B 分支已经存在,先删除它 (使用 -D 强制删除,忽略未合并警告) git branch -D B # 3. 基于当前所在位置(A) 新建并切换到 B 分支 git checkout -b B
原理解析: 你并没有“移动文件”,而是直接把 B 的标签贴到了 A 当前所在的提交记录上。此时 A 和 B 指向同一个 Commit ID,内容自然完全一致。
如果你不想删除分支(例如 B 分支设置了特定的上游追踪关系),可以使用此方法。
步骤如下:
# 1. 先切换到 B 分支 git checkout B # 2. 将 B 分支强制重置为 A 分支的内容 # 注意:这会永久丢弃 B 分支上原本比 A 多出的任何提交! git reset --hard A
如果你的 B 分支是在远程仓库(比如 origin/B),你想让远程的 B 变得和本地 A 一样。
# 确保你在 A 分支 git checkout A # 强制推送到远程的 B 分支 # 语法:git push <远程仓库名> <本地分支>:<远程分支> --force git push origin A:B --force
警告: 使用 ``git reset –hard`` 或 ``git branch -D`` 都是破坏性操作。执行前请确保 B 分支上没有你需要的、未备份的代码。
git diff --name-only 版本A 版本B
git checkout 版本号如767ddd7d
git checkout 分支号如sdf_dev