git

这是本文档旧的修订版!


git 回滚版本

  1. 查看历史版本
git log --oneline

结果示例:

c1d3a72 (HEAD -> main)  修复楼层映射界面逻辑
a5b4c11                 增加批量导入功能
a14de22                 初次提交
  1. 回滚到 c1d3a72 次的 commit
git reset --hard c1d3a72

git 提交到本地

git add .
git commit -m "提交备注"

git 提交到仓库

git push

生成后事件

Post,输入:

call ./del.bat

然后在根目录放一个 del.bat 文件,文件格式 UTF-8

内容如下,自己看着改:

del ".\bin\Debug\net48\xxx.dll"
del ".\bin\Debug\net48\ccc.dll"

Git 回滚后清理多余代码

当你使用 git reset 回滚版本后,工作区可能仍保留着新版本中创建但旧版本中不存在的文件(即“未追踪的文件”)。要彻底清理这些多余文件,只保留当前版本的代码,你需要使用 git clean 命令。

首先,确保你的已追踪文件(Tracked Files)已经强制重置到了目标版本。

# 注意:--hard 会丢弃所有未提交的修改
git reset --hard <你的目标CommitID>

git clean 用于从工作区中删除未被追踪的文件。

在真正删除之前,先查看一下哪些文件会被删除,防止误删重要的配置文件(如 .env 或 IDE 配置)。

git clean -nfd
  • -n: (Dry run) 演习模式,不实际删除,只列出会被删除的文件。
  • -f: (Force) 强制模式,Git 默认需要此参数才允许删除。
  • -d: (Directory) 同时移除未被追踪的文件夹

确认上面的列表没问题后,执行以下命令。这将删除多余代码,但保留 .gitignore 中忽略的文件(如编译缓存、依赖包)。

git clean -fd

如果你想让项目回到“刚 Clone 下来”的纯净状态,连同编译生成的文件(Ignored files)一起删掉:

git clean -fdx
  • -x: 同时也删除被 .gitignore 忽略的文件。
  • 警告:这会删除你的 IDE 配置文件、编译输出、依赖包(如 node_modules),执行后通常需要重新 build。

Git: 强制拉取远端 Master 分支 (忽略本地更改)

本指南介绍如何强制将本地仓库重置为与远端 `master` 分支完全一致的状态。

<note warning> 警告: 执行此操作将永久丢失所有未提交(Uncommitted)的更改以及本地已经提交但未推送到远端的更改。请在执行前确保你不需要保留这些更改,或者已经做好了备份。 </note>

要强制覆盖本地更改,我们需要分两步走:首先从远端获取最新信息,然后强制重置本地分支。

首先,我们需要从远端仓库(通常命名为 `origin`)下载最新的分支信息,但暂时不合并到本地。

git fetch --all
  • git fetch: 从远端下载对象和引用。
  • –all: 如果定义了多个远端仓库,此选项会从所有远端获取。

接下来,我们将本地的 `master` 分支指针强制移动到远端的 `origin/master` 位置。

git reset --hard origin/master
  • git reset: 重置当前 HEAD 到指定状态。
  • –hard: 重置索引(Index)和工作树(Working Tree)。这意味着所有自上次提交以来的更改都会被丢弃,文件将完全匹配 `origin/master` 的状态。
  • origin/master: 这是我们刚刚通过 `git fetch` 获取的远端分支的引用。

上述 `reset –hard` 命令只会影响 Git 追踪的文件。如果你在本地创建了新文件(Git 未追踪的文件),它们仍然会存在。如果你想让目录变得完全干净(和刚克隆下来一样),可以运行以下命令:

git clean -fdx
  • -f: 强制删除。
  • -d: 删除未被追踪的目录。
  • -x: 删除被忽略的文件(即 `.gitignore` 中指定的文件,如编译产物、日志等)。

你可以将这些命令组合成一个序列快速执行:

git fetch --all
git reset --hard origin/master
# 慎用下面这行,除非你确定要删除所有未追踪文件
# git clean -fdx 
  • 如果我的分支不叫 master 怎么办?
    • 如果你的主分支叫 `main`,请将命令中的 `master` 替换为 `main`:
git reset --hard origin/main
  • 这会删除我本地新建的分支吗?
    • `git reset –hard` 只会影响当前检出的分支。如果你在 `master` 分支上执行此操作,其他本地分支(如 `feature-login`)不会受到影响。但是,如果那些分支是基于旧的 `master` 创建的,它们可能会与新的 `master` 产生分歧。

该主题尚不存在

您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。

  • git.1764293430.txt.gz
  • 最后更改: 2025/11/28 09:30
  • 张叶安