git 知识
2026/9/2 12:33:23 网站建设 项目流程

git-reset

参数 –mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
个人建议使用情况:本地add commit了许多没有意义的记录,提交时只想提交有意义的,在提交之前执行。git reset HEAD~n n :之前提交的次数

参数 –soft
不删除工作空间改动代码,撤销commit,不撤销git add .

gitreset--softHEAD^

HEAD^的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2

参数 –hard
适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
git reset --hard 目标版本号
git push -f 强制提交

git-revert 、 git-restore

git restoregit revert是两个不同的 Git 命令,它们有不同的用途和功能。

  1. git restore

    • git restore用于撤销对文件的修改。它可以撤销工作目录中的修改,也可以撤销暂存区中的修改。
    • 它不会改变 Git 的历史记录,只是将文件恢复到之前的状态。
    • 适用于撤销本地修改,不涉及对历史记录的更改。
    • commit 后此操作不起作用
    • git restore . 取消本地没有提交的更改,取消后内容不可恢复。 没有执行 add 时
    • 如果执行 add 后
    • git restore --staged .
    • git restore .
      git restore --staged 撤回来但又不想丢弃本地修改
  2. git revert

    • git revert用于创建一个新的提交,该提交撤销了指定提交所做的更改。
    • 它会创建一个新的提交,这个提交会撤销指定提交的所有更改,并保留历史记录。
    • 适用于撤销已经提交的更改,并且希望保留历史记录。
    • git revert HEAD 撤销前一次 commit
    • git revert HEAD^ 撤销前前一次 commit

总结来说,git restore用于撤销本地修改,而git revert用于撤销已经提交的更改并保留历史记录。
在本地没有执行commit操作时感觉,restore,跟revert 一样。

git commit --amend

git commit --amend是 Git 中用于修改最近一次提交的命令,常用于修复刚刚提交的错误(如遗漏文件、提交信息写错、代码有小问题等),避免为了微小修正而创建新的提交,从而保持提交历史的整洁。

核心作用

修改最近一次的提交记录,包括:

  1. 补充提交内容(如遗漏的文件);
  2. 修改提交信息(如纠正错别字、补充细节);
  3. 合并微小修改到最近一次提交(避免多余的“fix”提交)。

使用场景与示例

1. 提交后发现遗漏文件或代码有小错误

假设你刚执行git commit -m "添加用户登录功能",但发现漏提交了login.css文件,或代码中有个拼写错误需要修正:

# 1. 先修改错误(如修正代码)或添加遗漏文件gitaddlogin.css# 或修改后用 git add 标记更改# 2. 用 --amend 合并到最近一次提交gitcommit--amend

执行后会打开默认编辑器(如 Vim),显示最近一次的提交信息,你可以直接保存(保持信息不变),或修改信息后保存。最终,最近一次提交会被更新,包含新的修改。

2. 仅修改提交信息(无需修改代码)

如果提交信息写错了(如“添加用户登功能”少了“录”字),无需修改代码,直接用-m指定新信息:

gitcommit--amend-m"添加用户登录功能"# 直接替换提交信息

注意事项

  1. 仅用于未推送的本地提交
    如果最近一次提交已经通过git push推送到远程仓库,--amend会修改提交历史(生成新的提交哈希),此时需要用git push --force强制推送覆盖远程记录。但这会影响协作(如果其他人已经基于该提交开发),可能导致冲突,因此推送后的提交尽量不要用 --amend 修改

  2. 不要修改共享历史
    如果多人协作,且你的提交已被他人拉取(pull),修改该提交会导致他人本地历史与远程不一致,引发混乱。这种情况建议用新的提交(如git commit -m "fix: 修正登录功能遗漏文件")来修正,而非--amend

  3. 本质是替换提交
    --amend并非在原提交上修改,而是创建一个新的提交替换最近一次提交,原提交会被标记为“可删除”(最终会被 Git 垃圾回收清理)。

总结

git commit --amend是整理本地提交历史的实用工具,适合修正刚提交的小问题,但需注意:未推送到远程的提交可放心修改,已推送的提交慎用,尤其在协作场景

参考地址
https://blog.csdn.net/qq_36125138/article/details/118606548
https://blog.csdn.net/qq_33154343/article/details/100524686

git tag

附注标签
在 Git 中创建附注标签十分简单。 最简单的方式是当你在运行 tag命令时指定 -a选项:

gittag-av1.4-m"my version 1.4"gitshow v1.4gitpush origin<tagName>//推送到远程仓库gitpush origin--tags// 一次全部推送所有tags 查看本地所有 tag : //下面两个命令都可以gittaggittag-l查看远程所有 tag:gitls-remote--tagsorigin

-m查看本地所有 tag :

//下面两个命令都可以
git tag
git tag -l
查看远程所有 tag:

git ls-remote --tags origin选项指定了一条将会存储在标签中的信息。 如果没有为附注标签指定一条信息,Git 会启动编辑器要求你输入信息。

通过使用 git show命令可以看到标签信息和与之对应的提交信息:

https://www.cnblogs.com/konglxblog/p/16384162.html

分支相关

git merge --abort

git merge --abort是一个 Git 命令,用于在合并过程中取消合并操作。当你在执行git merge命令时,如果合并过程中出现了冲突或者你决定不继续合并,可以使用这个命令来取消合并操作,恢复到合并前的状态。

使用方法很简单,只需要在命令行中输入:

git merge --abort

执行这个命令后,Git 会尝试撤销合并操作,将工作目录和索引恢复到合并开始之前的状态。请注意,这个命令只能在你处于合并过程中时使用,如果合并已经完成或者合并过程中没有冲突,这个命令将不会有任何效果。

删除分支

本地:

安全删除(推荐)

gitbranch-d<分支名>

强制删除(谨慎使用)
如果分支未合并但确实需要删除,使用 -D 选项强制删除(此操作不可逆)

gitbranch-D<分支名>

注意:不能删除当前所在的分支,需要先切换到其他分支

远端:
gitpush<远程仓库名>--delete<分支名>gitpush origin--deletefeature-branch

如果你想同时删除本地分支,可以使用:

gitbranch-dfeature-branch

git 删除本地没有add 的文件

  • 先预览:避免误删(关键前置步骤)
    执行删除前,强烈建议先预览将要被删除的文件,防止误删重要的未跟踪文件(比如刚写的未 add 的业务代码)。
  • 1.1 预览未被跟踪的文件(仅列出,不实际删除)
    git clean -n
  • 1.2 若需要同时预览未被跟踪的目录,添加 -d 参数
    git clean -nd
  1. 实际删除:分场景使用
  • 场景 1:删除所有未被跟踪的文件(不删除目录)
    git clean -f

    • 参数说明:-f(–force):强制执行删除操作,无该参数无法实际删除(防止误操作)。
    • 适用场景:仅清理零散的未跟踪文件(如 *.log、临时文件.txt 等)。
  • 场景 2:删除所有未被跟踪的文件 + 目录(最常用)
    git clean -fd

    • 组合参数 fd:-f 强制删除文件,-d 强制删除未跟踪的目录。
    • 适用场景:清理项目中生成的目录(如 dist/、node_modules/(未被 .gitignore 忽略时)、build/ 等)。

从 Git 的跟踪(暂存区)中移除已经跟踪的文件

git rm -r --cached 文件目录地址 例如: git rm -r --cached modules/expo-system-location/android/build
参数含义
git rm从 Git 索引(暂存区)中移除文件
-r递归操作,移除该目录及其所有子目录和文件
--cached仅从暂存区移除,不删除本地硬盘上的实际文件
modules/.../build目标路径,即 Expo 模块的 Android 构建产物目录

使用场景
这个命令在 Expo/React Native 项目中非常常见,通常用于解决以下问题:
误提交了 build 目录:android/build 是编译生成的产物,不应该被 Git 跟踪。如果之前不小心 git add . 把它加入了版本控制,就需要用这条命令来"取消跟踪"。
让 .gitignore 生效:.gitignore 只对未被跟踪的文件生效。如果 build 目录已经被 Git 跟踪了,即使你在 .gitignore 中写了 build/,Git 也会忽略这条规则。执行 git rm -r --cached 后,.gitignore 才能真正生效。

注意事项
执行后 git status 会显示大量 deleted: 文件,这是正常的——表示 Git 不再跟踪这些文件,但本地文件依然存在。
如果执行时提示 error: the following file has local modifications,可以加上 -f 参数强制移除:git rm -rf --cached modules/expo-system-location/android/build
推送后,其他协作者执行 git pull 时,他们本地的 build 目录也会被 Git 移除跟踪,但不会删除他们本地的编译产物。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询