新闻详情

新闻详情

首页 / 资讯中心 / 详情

Git入门到实操:安装、提交、分支与Gitee密钥配置

发布时间:2026/9/26 11:59:43来源:尧图网络
Git入门到实操:安装、提交、分支与Gitee密钥配置
如果你跟我一样经历过电脑里堆满“项目最终版”“项目最终版2”“项目最终版改改改”这种文件的阶段应该能体会一个分布式版本控制工具到底有多重要。Git 就是目前全球使用最广的版本控制工具它不只是帮你把代码历史存下来更关键的是让多人协作时不再互相覆盖、不用反复传压缩包、所有改动都有据可查。这篇文章写给刚接触 Git 或者装了 Git 但一直没搞懂怎么用得顺手的同学我会从安装讲起把日常最高频的命令、容易踩的坑、以及最近很多人搜的 git commit --amend 和 Gitee 密钥配置都捋一遍保证你能照着操作少走弯路。1. 为什么需要Git版本控制的本质与分布式优势1.1 从“另存为”到真正的版本控制很多刚开始写代码的人会觉得我每次改完都把代码备份一个文件夹不就是在做版本控制吗说实话我在刚开始写项目的时候也这么干过。问题是代码项目不像文档一个项目可能有几十个文件你不可能每次都把整个目录复制一遍。就算你真的复制了过两周后你自己都记不清“v3”和“v4”到底差在哪里。更尴尬的是两个朋友同时改了同一个文件最后谁先保存谁就把对方的内容覆盖掉了。Git 解决的就是这件事。它把你每一次有意义的改动记录成一个“提交”每个提交都带着时间、作者、改动说明你可以随时回到任何一个历史节点也可以把两条不同的开发线合并在一起。这些操作都在本地完成速度很快不依赖网络所以哪怕你在飞机上、在高铁上一样可以提交代码回到有网的地方再推送到远程仓库。1.2 分布式与集中式的本质区别如果你之前用过 SVN 或者 TFS你会熟悉“集中式”的概念代码集中存放在一台服务器上每个人需要先“检出”文件改完再“提交”回去如果网络断了很多操作都做不了。Git 不一样它是分布式版本控制工具。这个概念听起来有点玄其实说白了就是每个人电脑上都有一个完整的仓库不只是当前文件快照而是包含全部历史的全量备份。也就是说就算远程服务器挂了任何一个人的本地仓库都能把项目恢复出来。这一点在实际工程里救过很多次命我遇到过公司内网 Git 服务器硬盘损坏最后靠同事的本地仓库完整恢复了项目。因为是分布式设计分支的成本也极低。你在 SVN 上拉一个分支可能要考虑服务器压力在 Git 上建分支就是一个指令的事所以大家可以放心地按功能分、按版本分、按实验分这也就衍生了后面各种成熟的分支协作模型。2. 安装Git各平台下的完整步骤与验证2.1 Windows系统安装Git含下载与配置Windows 下装 Git 最常规的方式就是去官网下载安装包安装过程一路点“Next”其实也能用但我建议你注意几个选项免得后面用起来别扭。第一次安装时在“Adjusting your PATH”这一步建议选“Git from the command line and also from 3rd-party software”这样 Git 的命令不仅能在它自带的 Git Bash 里用也能在 PowerShell、CMD 里直接调用。默认编辑器我通常选“Use Visual Studio Code默认”如果没装 Vs Code 就选 Nano 或者 Vim 也行不过新手用 Vs Code 会更直观。行结束符转换那个选项Windows 下我一般选“Checkout Windows-style, commit Unix-style line endings”这样团队里不同系统的同学协作时不容易出现整文件被改动的情况。安装完成后打开 PowerShell 或者 CMD输入 git --version看到类似 git version 2.45.1 的输出就说明装好了。这时候还可以顺手确认一下其他基础命令git config --list如果没报错说明环境没问题。2.2 macOS和Linux系统安装GitmacOS 上如果你装了 Homebrew一条命令就能搞定brew install git如果没装 Homebrew也可以下载官方 pkg 安装包或者用 Xcode Command Line Tools 附带提供的 Git。我个人的习惯是用 brew因为后续升级也方便。Linux 用户根据发行版不同Debian/Ubuntu 用sudo apt update sudo apt install gitCentOS/RHEL 系的用sudo yum install git或者新版系统用 dnf。装完之后同样去验证 git --version。这里多说一句很多云服务器默认自带了 git但版本可能比较老如果你需要更丰富的功能比如更优雅的分支提示建议还是装一下官方源里的新版。2.3 安装后的全局配置你的第一张“名片”Git 的提交会记录作者信息所以安装完第一件事就是告诉 Git 你是谁。这里不是注册账号只是在本地配置git config --global user.name 你的名字 git config --global user.email youremail.com注意这个 email 不一定非要和 GitHub/Gitee 的账号邮箱一致但建议保持一致这样远程平台能把提交记录关联到你的账号上。用git config --global --list可以检查配置是否生效。我也见过有人忘记配置就直接提交结果 Git 会默认用你的系统用户名加上一串无序的后缀当作提交者后面在代码平台上看历史记录非常痛苦别人根本不知道是谁提交的。所以这一步千万不能省。3. 核心日常操作从仓库初始化到提交、分支与撤销3.1 创建仓库并完成第一次提交假设你已经有一个项目文件夹比如叫 myapp进入这个目录后执行git init这会创建一个隐藏的 .git 目录里面就是 Git 用来管理版本的数据库。此时项目还没有任何文件被跟踪你可以用git status看到当前状态通常会显示一堆未跟踪的文件。接下来需要先暂存文件再提交git add . git commit -m init projectgit add .会把当前目录下所有未跟踪、有改动的文件加到暂存区git commit则把暂存区的内容固化成一个版本。很多人刚开始会混淆这两个动作。我会打一个比方git add是把自己要寄出的东西收拾好装进快递袋git commit是填写快递单并寄出。快递袋里到底放了什么在 commit 之前你都可以随时调整。提交之后再用git log --oneline能看到一条简洁的提交记录比如e3a21b0 init project说明仓库已经正式运转起来了。3.2 分支管理并行开发不再互相踩脚分支是 Git 最强大的功能。为什么需要分支举个例子你的项目已经稳定在 v1.0 了这时候想开发一个 v2.0 的大功能但它可能要做很久、改动很大你又不想影响正在线上跑的 v1.0。此时可以开一条新分支git branch dev-v2 git checkout dev-v2或者更省事地一条命令git checkout -b dev-v2这条命令相当于“创建分支并切过去”。在 dev-v2 上改代码、提交完全不会影响主分支。等开发完成、测试通过再切回主分支合并git checkout main git merge dev-v2合并的时候可能产生“冲突”原因通常是两条分支改了同一个文件的同一行。Git 会在冲突文件里用和标记双方的改动你需要手动修改成最终想要的内容然后保留这些标记再重新git add和git commit。我第一次遇到冲突时很慌后来发现其实就是打开文件仔细看两边内容删掉不需要的只保留正确结果完全不可怕。3.3 修改提交记录git commit --amend 的正确用法最近搜这个问题的人特别多因为提交完之后发现自己写了错别字或者忘了把某个文件加进去再或者提交信息写得像“啊啊啊”想改掉。git commit --amend就是用来“修补”最近一次提交的。最常见的场景是我刚提交完发现少加了一个文件git add README.md git commit --amend --no-edit--no-edit表示保留原来的提交信息只是把新增内容补进去。如果你想顺便修改提交信息直接git commit --amend -m 修正后的提交信息这个命令会把最近一次提交“重写”成新的提交原来的记录被替代Git 会生成一个新的提交哈希值。但这里有个特别重要的注意事项git commit --amend只能改“还没有推送”的提交。如果你已经把这次提交推送到了远程仓库其他人也基于它工作了这时候再用 amend 改写历史会导致别人的本地历史和远程历史对不上后面 pull 会出现一堆冲突。遇到这种情况更安全的做法是新增一个提交在提交信息里说明“修正上一步”。如果你确实需要调整多条历史提交那就得用交互式 rebasegit rebase -i HEAD~n但那属于进阶操作新手不建议一上来就用。3.4 撤销操作三个“后悔药”怎么选Git 里撤销方式很多新手最容易懵我自己也踩过不少坑。我按场景给你分清git checkout -- 文件名把某个文件在工作区的改动全部丢弃回到最近一次提交的状态。适合改了半天发现改错了想彻底还原。git reset HEAD~1 --soft撤销最近一次提交但保留改动内容在暂存区。适合提交完突然发现还有其他方西要一起放进去又不想新增一条提交时用。git reset --hard HEAD~1撤销提交并丢弃所有改动。这个要慎用因为丢弃的内容无法直接恢复。git revert commit反向生成一个新提交用来“撤销”某个历史提交的改动但不会删除历史记录。适合已经推送到远程仓库的提交。我对新手的建议是在还没有完全熟悉仓库机制之前尽量少用--hard因为那相当于把工作区、暂存区、本地仓库全部强制重置万一你有些代码并没有完整备份那损失是很大的。4. 远程仓库协作Gitee密钥配置与推送4.1 配置Gitee的SSH密钥从生成到验证很多人直接把代码托管到 Gitee国内代码托管平台或 GitHub这样既方便备份也方便和同事协作。用 SSH 比用 HTTPS 省心得多至少推送时不用每次都输密码。下面以 Gitee 为例。生成 SSH 密钥ssh-keygen -t ed25519 -C youremail.com一路回车默认会在用户目录下生成一对密钥~/.ssh/id_ed25519和~/.ssh/id_ed25519.pub。公钥是给别人看的私钥自己保留千万别泄露。然后查看公钥内容cat ~/.ssh/id_ed25519.pub复制输出的整行内容打开 Gitee 网站 → 个人设置 → SSH 公钥 → 添加公钥粘贴进去保存。添加完之后验证ssh -T gitgitee.com如果看到 Hi 你的用户名说明密钥配置成功。这里有个容易出错的地方如果你以前生成过密钥重装系统后使用的不是老电脑的私钥而是新生成的私钥同时 Gitee 上还留着老公钥就会报权限错误。所以每次重装系统都要记得去平台删掉旧公钥、重新配置。4.2 连接远程仓库并推送拉取在 Gitee 上新建一个空仓库拿到仓库的 SSH 地址然后绑定到本地git remote add origin gitgitee.com:你的用户名/myapp.git git push -u origin main-u的含义是第一次把本地 main 分支和远程 main 分支建立关联之后直接git push就行。后续如果你在本地新建了 dev 分支想把它推到远程git push origin dev拉取远程更新一般用git pull。这里我习惯先git fetch再看git diff确认无误后再git merge。因为git pull相当于 fetch merge有时候远程更新会打乱我本地未提交的改动分两步做能多一层缓冲。4.3 被很多IDE “藏起来”的命令参数git -c 系列详解很多同学在用集成开发环境比如 Android Studio 或 VS Code操作 Git 时经常会在控制台看到一长串命令里面有git -c diff.mnemonicprefixfalse -c core.quotepathfalse --no-optional-locks ...这串命令看起来像“天书”其实就是 Git 运行时的一些临时配置。git -c可以理解为不修改配置文件只对这一次命令临时设置某些参数。diff.mnemonicprefixfalse表示 diff 中的前缀不使用 a/ 和 b/ 这类简短助记符而是直接显示源文件与目标文件的路径IDE 里这样处理是为了让差异展示更直观。core.quotepathfalse很实用它的作用是关闭 Git 对非 ASCII 文件名的转义。如果不设置你的中文文件名会显示成类似\346\265\213\350\257\225.txt的八进制编码看着非常头疼。在命令行里执行一次git config --global core.quotepath false以后中文文件名就能正常显示了。--no-optional-locks的意思是禁止 Git 在执行只读命令比如 status、diff时获取额外的文件锁。多进程并发运行时可以避免一些临时锁导致的等待问题。这些参数你不需要死记硬背但理解它能帮你以后在遇到 IDE 输出命令时知道 Git 正在做什么从“看着害怕”变成“原来如此”。5. 我的Git实操心得与常见问题排查5.1 几个容易踩的坑中文乱码、大文件、提交信息先说中文乱码。如果你的仓库里出现了中文文件名而且命令行里看到的是转义序列别慌执行git config --global core.quotepath false改完之后git status和git log里就能正常看到中文路径了。如果是提交信息里的中文显示乱码可以再补充设置git config --global i18n.commitencoding utf-8但仓库本身采用 UTF-8 编码是前提。再说大文件。很多人不看提示把编译产物、依赖包、视频素材直接提交进去了结果仓库体积迅速膨胀后面每次拉取和推送都变得很慢。正确的做法是新建一个.gitignore文件把不需要版本控制的目录和文件写进去比如node_modules/ dist/ *.log .DS_Store如果你已经误提交了大文件可以在网上搜一下“git filter-repo”的历史清理方法但那种操作会影响整个仓库历史如果仓库已经被推送到远程务必提前和团队沟通。5.2 常见问题速查表下面这张表是我平时总结比较多的场景也许不完整但覆盖了新手最容易遇到的几类问题。错误或现象常见原因解决办法fatal: not a git repository当前目录不是 Git 仓库确认进入项目目录或先执行git initPlease tell me who you are没配置 user.name/user.email按 2.3 节配置Permission denied (publickey)SSH 密钥配置错误按 4.1 节重新生成并配置公钥再用ssh -T验证The authenticity of host ... cant be established第一次连接未知主机输入 yes 确认指纹回车后会继续中文文件名显示成数字编码core.quotepath未关闭执行git config --global core.quotepath false合并时冲突两侧修改了同一区域手动解决冲突后 add 和 commit提交后发现漏了文件暂存内容不完整补git add后用git commit --amend这些解决办法只要你照着做一遍基本都能顺利解决。如果遇到其他报错建议先阅读命令行给出的英文提示Git 的报错信息其实相当明确很多人只是没耐心往下看。5.3 给新手的工作流建议看到这里你是不是已经想马上建仓库试试了那就试。我的实操体会是Git 这种东西光看命令记忆效果很差真正练习一遍之后很多命令会内化成肌肉记忆。为了让你少走弯路我给你几个最具体的小建议。第一提交频率要适度。不要一行改动就提交也不要攒一周才提交。我自己的标准是一个完整的小功能、一次 bug 修复、或者一次重构就是一个提交。提交信息尽量写清楚动机比如“修复登录页在移动端溢出”而不是“update”。第二永远不要直接往 main 分支上乱推。哪怕只有你一个人开发也建议先开一个dev分支或者功能分支稳定之后再合并。这个习惯能让你以后进入团队协作时非常自然。第三善用git log --oneline --graph。这个命令可以一直查看提交历史的树状结构看到每个分支的走向。如果你发现历史乱成一团往往说明分支操作逻辑需要调整。另外我可以分享一个我个人的小技巧每天开始写代码前先git pull拉取远程最新代码每天结束前把当天改动提交并推送。这样就算第二天不小心改坏了也能靠 reset 回到昨天状态非常安心。最后再说一句Git 不像某些工具需要背一堆“快捷键”。把一个命令拆开看重点就是三个对象工作区、暂存区、仓库。想清楚改动目前“在哪一步”需要让它“去哪一步”命令自然就理解了。希望这篇文章能帮你真正把 Git 用起来之后代码备份、协作、复盘历史都会变成一件轻松的事。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Superpowers:本地化AI开发增强工具链深度解析 2026/9/26 12:53:17

Superpowers:本地化AI开发增强工具链深度解析

1. 项目概述:Superpowers 不是超能力,而是开发者工具链的“认知增强层”最近在几个技术社区和开发者的 Slack 频道里,“superpowers”这个词出现频率陡增——不是漫威电影里的变种人设定,也不是某款新出的健身 App,而是…

阅读更多 →
VScode 插件 Vue VSCode Snippets 配 TaoToken:settings.json 骨架与模板生成验证 2026/9/26 12:53:10

VScode 插件 Vue VSCode Snippets 配 TaoToken:settings.json 骨架与模板生成验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Jev类型安全AI接入层:从零构建强类型契约的工程实践 2026/9/26 12:53:10

Jev类型安全AI接入层:从零构建强类型契约的工程实践

1. 这个“哑巴模型”到底什么来头第一次看到“Jev”这个词在技术群里刷屏的时候,我正蹲在工位上啃三明治。群里有人甩了张截图,说“这玩意儿居然能跑通全链路类型校验”,底下跟了一串“求官网”“求密钥”“怎么接入”。我当时的第一反应是&a…

阅读更多 →
Cursor + MCP 配置指南:搭建AI半自动开发环境 2026/9/26 12:53:10

Cursor + MCP 配置指南:搭建AI半自动开发环境

先说个背景:我平时会在社交账号上分享一些开发环境的折腾记录,上一篇写到第六篇的时候,评论区问得最多的就是“为啥你的 Cursor 看起来像在自动驾驶,我的一问三不知”。其实核心差异不在模型,也不在技巧,而…

阅读更多 →
史上最全VSCode插件避坑指南:TaoToken统一Key接入settings.json配置与验证 2026/9/26 12:53:03

史上最全VSCode插件避坑指南:TaoToken统一Key接入settings.json配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
汉语与拉丁(英文)微生物命名对比:好记、好懂、好写、精准度与语言优劣分析 2026/9/26 12:53:03

汉语与拉丁(英文)微生物命名对比:好记、好懂、好写、精准度与语言优劣分析

汉语与拉丁(英文)微生物命名对比:好记、好懂、好写、精准度与语言优劣分析一、前提说明微生物的国际标准命名体系为拉丁双名法,英文科研文献直接沿用这套拉丁学名,作为全球统一的科学命名规范。我国微生物中文译名自成…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉