十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

git 知识

git 知识 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-restoregit restore和git revert是两个不同的 Git 命令它们有不同的用途和功能。git restoregit restore用于撤销对文件的修改。它可以撤销工作目录中的修改也可以撤销暂存区中的修改。它不会改变 Git 的历史记录只是将文件恢复到之前的状态。适用于撤销本地修改不涉及对历史记录的更改。commit 后此操作不起作用git restore . 取消本地没有提交的更改取消后内容不可恢复。 没有执行 add 时如果执行 add 后git restore --staged .git restore .git restore --staged 撤回来但又不想丢弃本地修改git revertgit revert用于创建一个新的提交该提交撤销了指定提交所做的更改。它会创建一个新的提交这个提交会撤销指定提交的所有更改并保留历史记录。适用于撤销已经提交的更改并且希望保留历史记录。git revert HEAD 撤销前一次 commitgit revert HEAD^ 撤销前前一次 commit总结来说git restore用于撤销本地修改而git revert用于撤销已经提交的更改并保留历史记录。在本地没有执行commit操作时感觉restore跟revert 一样。git commit --amendgit commit --amend是 Git 中用于修改最近一次提交的命令常用于修复刚刚提交的错误如遗漏文件、提交信息写错、代码有小问题等避免为了微小修正而创建新的提交从而保持提交历史的整洁。核心作用修改最近一次的提交记录包括补充提交内容如遗漏的文件修改提交信息如纠正错别字、补充细节合并微小修改到最近一次提交避免多余的“fix”提交。使用场景与示例1. 提交后发现遗漏文件或代码有小错误假设你刚执行git commit -m 添加用户登录功能但发现漏提交了login.css文件或代码中有个拼写错误需要修正# 1. 先修改错误如修正代码或添加遗漏文件gitaddlogin.css# 或修改后用 git add 标记更改# 2. 用 --amend 合并到最近一次提交gitcommit--amend执行后会打开默认编辑器如 Vim显示最近一次的提交信息你可以直接保存保持信息不变或修改信息后保存。最终最近一次提交会被更新包含新的修改。2. 仅修改提交信息无需修改代码如果提交信息写错了如“添加用户登功能”少了“录”字无需修改代码直接用-m指定新信息gitcommit--amend-m添加用户登录功能# 直接替换提交信息注意事项仅用于未推送的本地提交如果最近一次提交已经通过git push推送到远程仓库--amend会修改提交历史生成新的提交哈希此时需要用git push --force强制推送覆盖远程记录。但这会影响协作如果其他人已经基于该提交开发可能导致冲突因此推送后的提交尽量不要用 --amend 修改。不要修改共享历史如果多人协作且你的提交已被他人拉取pull修改该提交会导致他人本地历史与远程不一致引发混乱。这种情况建议用新的提交如git commit -m fix: 修正登录功能遗漏文件来修正而非--amend。本质是替换提交--amend并非在原提交上修改而是创建一个新的提交替换最近一次提交原提交会被标记为“可删除”最终会被 Git 垃圾回收清理。总结git commit --amend是整理本地提交历史的实用工具适合修正刚提交的小问题但需注意未推送到远程的提交可放心修改已推送的提交慎用尤其在协作场景。参考地址https://blog.csdn.net/qq_36125138/article/details/118606548https://blog.csdn.net/qq_33154343/article/details/100524686git tag附注标签在 Git 中创建附注标签十分简单。 最简单的方式是当你在运行 tag命令时指定 -a选项gittag-av1.4-mmy version 1.4gitshow v1.4gitpush origintagName//推送到远程仓库gitpush origin--tags// 一次全部推送所有tags 查看本地所有 tag //下面两个命令都可以gittaggittag-l查看远程所有 taggitls-remote--tagsorigin-m查看本地所有 tag //下面两个命令都可以git taggit tag -l查看远程所有 taggit ls-remote --tags origin选项指定了一条将会存储在标签中的信息。 如果没有为附注标签指定一条信息Git 会启动编辑器要求你输入信息。通过使用 git show命令可以看到标签信息和与之对应的提交信息https://www.cnblogs.com/konglxblog/p/16384162.html分支相关git merge --abortgit merge --abort是一个 Git 命令用于在合并过程中取消合并操作。当你在执行git merge命令时如果合并过程中出现了冲突或者你决定不继续合并可以使用这个命令来取消合并操作恢复到合并前的状态。使用方法很简单只需要在命令行中输入git merge --abort执行这个命令后Git 会尝试撤销合并操作将工作目录和索引恢复到合并开始之前的状态。请注意这个命令只能在你处于合并过程中时使用如果合并已经完成或者合并过程中没有冲突这个命令将不会有任何效果。删除分支本地安全删除推荐gitbranch-d分支名强制删除谨慎使用如果分支未合并但确实需要删除使用 -D 选项强制删除此操作不可逆gitbranch-D分支名注意不能删除当前所在的分支需要先切换到其他分支远端gitpush远程仓库名--delete分支名gitpush origin--deletefeature-branch如果你想同时删除本地分支可以使用gitbranch-dfeature-branchgit 删除本地没有add 的文件先预览避免误删关键前置步骤执行删除前强烈建议先预览将要被删除的文件防止误删重要的未跟踪文件比如刚写的未 add 的业务代码。1.1 预览未被跟踪的文件仅列出不实际删除git clean -n1.2 若需要同时预览未被跟踪的目录添加 -d 参数git clean -nd实际删除分场景使用场景 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 移除跟踪但不会删除他们本地的编译产物。
返回列表