ARTICLE DETAIL

资讯详情

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

Git入门指南:从安装配置到日常命令的完整实战手册

Git入门指南:从安装配置到日常命令的完整实战手册 我不姓奶奶但在这个行业里待得久了办公室的小孩儿都这么喊我。这些年我带过的新人少说也有几十个大家刚接触写代码时绕不开的就是同一个坎Git。Git这个词听起来很神其实就是一套管代码的工具。你写的每一份代码、每一次修改、每一个想退回的节点它都能帮你记住、帮你找回、帮你合并。这篇文章专门写给所有刚开始摸代码、被Git折腾得想摔鼠标的朋友我会用教自家孩子的方式把Git安装、基本配置、常用命令和常见报错一点点讲清楚保证你跟着做就能上手。1. 为什么连奶奶都需要学Git——先搞懂代码管理这件事1.1 Git到底是什么它帮你解决什么问题很多人第一次听见Git是在面试题里或者是同事的嘴里蹦出来的。它有个学名叫版本控制系统这词儿听着唬人其实特别接地气。你写平时交的论文是不是习惯存好几个版本初稿、修改稿、最终稿、打死不改稿写到第三版又觉得第二版某段更好只能翻箱倒柜找旧文件。Git就是给这种场景配的助理你每次修改代码跟它说一声记一下它就把当时所有文件的内容整个快照存下来。以后你想回退到任意一次记一下的时间点一条命令的事。它最实用的三个场景防丢电脑出故障、文件误删、手滑覆盖都不怕因为Git本地和远程都有历史版本。允许反悔代码改崩了可以干净地回到上一个正常状态不用一遍遍按撤销键。多人协作几个人同时改同一个项目Git会记录谁在什么时间改了哪里最后把大家的修改合并到一起。我见过不少新手刚写了几天代码就把整个项目弄没了急得眼圈通红。其实只要从第一天就养成用Git的习惯这种崩溃基本不会发生。1.2 先分清三样东西Git、GitHub、命令行好多新人把这三样混在一起问的问题经常是我Git打不开网站怎么办。这里花两分钟理清楚。Git是一个装在你自己电脑上的免费软件它主要负责本地干活不联网也能记录版本。GitHub是一个网站可以理解为替你保存代码的远程仓库把本地代码备份到云端也方便团队协作类似的还有GitLab和Gitee。命令行是你的对话窗口在Windows上叫PowerShell或cmd在macOS上叫终端你在这个窗口里敲以git开头的命令Git就帮你执行操作。用大白话说就是Git是你家里的记事本GitHub是银行保险柜命令行是你们之间的通话电话。你要做的事情就是在命令行里用Git命令把本地写好的代码推送到GitHub这个保险柜里存好。搞清这个关系再往下走脑袋里就有一张地图了。1.3 装之前先查一下电脑里是不是已经有Git很多电脑其实自带Git不用重复安装。先打开命令行Windows用户按WinR输入cmd回车macOS用户在启动台里搜索终端打开。然后敲git --version如果屏幕出现类似 git version 2.39.2 的字样说明电脑里已经有Git了直接跳到第二节去配置就行。如果提示 git 不是内部或外部命令 或者 command not found: git那就是没装好或者没有加入环境变量跟着下面的步骤动手装。2. Git的安装与配置一步步来别慌2.1 Windows安装全程下一步但三个选项要留意Windows用户装Git最省心的方式是打开Git官方网站git-scm.com点Downloads下载Windows版本然后双击安装包。安装界面虽然是英文的但不需要每个字都看懂大部分页面直接点Next。有三处需要稍微留心第一处是安装路径默认在C盘就好别手痒去改省得给自己找麻烦。第二处是Adjusting your PATH environment这一步务必保持默认选项 Git from the command line and also from 3rd-party software。如果选成了只从Git Bash里用后面你在cmd里敲git系统会提示找不到命令非常坑。第三处是换行符设置英文叫Line Ending Conversions默认的Checkout Windows-style, commit Unix-style line endings就是最合适的。听着绕口意思是代码从仓库里拿下来时转成Windows格式提交回仓库时再统一成Linux风格格式这样能最大程度减少团队协作时的换行符闹剧。其余页面一路Next装完之后重新开一个命令行窗口再敲 git --version 验证一下能看到版本号就说明装好了。2.2 macOS和Linux用户怎么装macOS装Git我比较推荐先装Homebrew这个包管理器然后一条命令搞定brew install git如果不想折腾Homebrew也可以去Git官网下macOS版本像装普通软件一样双击安装。还有部分macOS系统自带Git虽然版本可能偏老但对新手学习完全够用。Linux用户得看发行版。Debian/Ubuntu系列用sudo apt update sudo apt install git -yCentOS/RHEL/Fedora系列用sudo yum install git -y装完统一用 git --version 确认。看到版本号就说明安装这关过了。2.3 装完立刻要做的三件事用户名、邮箱、换行符不少人都卡在这一步Git装好了高高兴兴去提交结果系统甩来一句 Author identity unknown。这是因为Git需要知道你是谁才会在每次提交上盖你的名字戳。这个配置在命令行里执行加 --global 表示全局生效只需要做一次git config --global user.name 你的昵称 git config --global user.email 你的邮箱example.com两点提醒。第一邮箱建议填写你注册GitHub或Gitee这类托管平台时用的那个这样你的提交记录能正确关联到账号头像上看着专业。第二Windows用户顺手执行git config --global core.autocrlf truemacOS/Linux用户执行git config --global core.autocrlf input这行命令的作用就是前面安装时提到的换行符处理装的时候保留默认这里再复核一遍更保险。用 git config --list 可以查看所有已配置项确认没有漏东西。到这一步Git就在你的电脑里安好家了接下来正经用起来。3. 第一次上手Git的三板斧add、commit、push3.1 从零初始化仓库git init 做了什么先找一个练习用的文件夹比如D盘的 learn-git在里面新建一个文本文件 hello.txt写上你好Git。然后在这个文件夹里打开命令行Windows可以在文件夹地址栏输入cmd后回车macOS可以在访达的文件夹里打开终端输入git init回车后Git会提示 Initialized empty Git repository。这时候你去看文件夹可能会发现多了一个 .git 目录如果看不到需要在文件资源管理器里开启显示隐藏文件选项。这个 .git 目录就是Git的账本里面记录着这个项目所有版本变化。以后在这个文件夹里执行的每条git命令都在围绕这个账本工作。关于 git init 有个常被忽略的注意点一个项目只要初始化一次。千万不要在项目里的子文件夹又执行一遍 git init那样会搞出嵌套仓库一堆命令在里面很容易走错路。新手阶段记住一句话一个项目一个仓库。3.2 把文件交给Gitgit add 和 git commit初始化之后你的 hello.txt 还在账本外面。要让它被Git管理得走两步。第一步把文件放进暂存区git add hello.txt如果想把这个文件夹里所有变动都加进来可以用git add .第二步把暂存区的内容正式提交为一条记录git commit -m 第一次提交添加你好文件commit后面的 -m 是message的意思引号里写这次提交的说明。这一步非常关键很多人图省事写个111或者aaa将来翻改历史的时候完全看不懂当时在干嘛后患无穷。提交成功会看到一段提示类似 1 file changed, 1 insertion()意思是本次提交涉及1个文件、增加了1行内容。这时候再执行 git status会显示 working tree clean意为工作区干干净净所有改动都已记录在案。为了真正建立手感我建议你立刻做三遍练习改 hello.txt 的内容再 git add再 git commit -m 第二次修改连续改动三次后执行 git log --oneline会看到三条提交记录整齐排队。这个记录感一旦出来了你就明白Git的价值了。3.3 关联远程仓库并推送git remote 与 git push本地账本记好了但只有一份电脑坏了照样全没。所以要把它推到远程托管平台常见的有GitHub、GitLab、Gitee。以GitHub为例你先在网站注册账号并新建一个仓库Repository建的时候有两点需要注意第一仓库名最好不要有中文和空格第二新建时先别急着勾选Add a README file否则远程会多一次初始提交新手在后面推送时容易被冲突报错吓到。拿到远程仓库地址形如 https://github.com/用户名/仓库名.git后在本地命令行执行git remote add origin https://github.com/用户名/仓库名.git这行命令的意思是给远程仓库起个小名 origin之后用它代替一长串网址。接着推送git push -u origin main-u 参数表示把本地main分支和远程main分支关联起来以后在同一分支上直接敲 git push 就够了。推送过程中可能会要求登录GitHub账号按提示在浏览器里完成授权即可。看到类似 main - main 的输出刷新一下GitHub页面你的代码已经躺在远程仓库里了。补充说明一下分支名。老版本Git的默认分支叫master新版本很多叫main二者本质上一样只是名字不同。你用 git init 初始化出来的仓库默认分支如果是main就推 main如果显示是master就写 git push -u origin master和远程分支对上就行。4. 日常用得最多的Git命令备好这份小抄4.1 状态查看三兄弟status、log、diff学Git最怕不知道自己处于什么状态。所以奶奶先教你三个查状态的命令。git status 是最常用的用来查看工作区当前状态哪些文件改了、哪些还没add、哪些已经放进暂存区都会用文字明确告诉你。很多新人看见一堆英文就慌其实只需要抓几个关键词Changes not staged for commit表示有改动但还没addChanges to be committed表示已经add但还没commitnothing to commit表示一切正常。看见第三个就能安心下班。git log 查看提交历史强烈建议加上 --oneline 参数每条提交压成一行来看git log --oneline你会看到类似下面的输出3f2a9d1 第二次修改 b8c7e12 第一次提交左边那串字母数字是每条提交的唯一ID今后想回退版本靠它认路。git diff 用来查看具体改了什么。写代码写到一半突然忘了改动细节执行 git diff 会精确显示每一行的增删情况。注意git diff 默认只比较工作区跟暂存区的差异如果已经执行过 git add还想看暂存区跟上次提交的差异就要用 git diff --cached。4.2 分支操作branch、switch、merge分支是Git最强大也最容易劝退新手的功能。我用高速公路来打比方main分支是主干道你想开发一个登录功能担心搞砸整条路就在旁边修一条匝道也就是新分支在匝道上随便折腾。试验成功了把匝道接回主干道这叫合并试验失败了把匝道直接铲掉主干道毫发无损。常用命令# 查看当前所有分支 git branch # 新建分支并切换过去 git checkout -b feature/login # 切回主干道 git checkout main新版Git更推荐用 git switch 来切分支语义更清晰不容易和撤销操作混淆git switch -c feature/login git switch main合并分支时先切到要合并到的目标分支比如main再执行git merge feature/loginGit会把 feature/login 分支上的所有提交合并到main里。如果两个分支改了同一个文件的同一处地方合并过程可能出现冲突解决办法在第五部分展开讲。这里先记住命令本身别贪多。4.3 撤销与回滚restore、reset、revert怎么选撤销操作是新手问得最多的也是最容易搞混的地方我直接用一张表给你说清。操作场景推荐命令影响范围工作区改乱了想撤回未提交的改动git restore 文件名未提交改动直接丢慎重已经add了想取消暂存git restore --staged 文件名内容不丢只是移出暂存区还没有push想退回某个历史版本git reset 提交ID根据参数决定是否删提交已经push了想撤销某次提交git revert 提交ID新增一次反向提交历史保留其中 git reset 有三个常见参数需要单独解释--soft 只是把HEAD指针挪回去改动内容还留在暂存区--mixed 是默认值把改动从暂存区挪回工作区--hard 会把所有改动都扔掉是最强也最危险的操作。新手如果只是后悔了想重来优先用 git restore别一上来就碰 reset --hard。等以后对Git理解深了再按需要选择。对于已经推送到远程的提交我强烈建议用 git revert 而不是 git reset因为revert不会改写项目历史它相当于在原有提交后面追加一条反着做一遍的提交协作时不至于把队友的历史搞乱。5. 常见问题与排查技巧实录5.1 我遇到的几个典型翻车现场新手学Git几乎人人都会碰见下面几个场景。我把应对方法直接写出来你遇到时对照操作就行。第一个第一次 push 被拒绝。报错往往是 ! [rejected] main - main (fetch first)。原因通常是远程仓库里有本地没有的提交比如你建仓库时勾了README远程就多出一条初始提交。解决办法是先把远程内容拉下来合并git pull --rebase origin main然后再 git push一般就能通过。注意这里的 --rebase 参数它的作用是把本地新提交接到远程提交后面让历史线保持整洁比直接 git pull 少产生一个多余的合并提交。第二个作者身份没配置。执行 git commit 时报 Author identity unknown。解决办法就是回第二节把 user.name 和 user.email 配好。很多人配过依然报错多半是命令拼错成 user.nickname或漏了 --global用 git config --list 检查一下就能看到问题。第三个Windows上文件没改却显示modified。这种问题十有八九是换行符没配置对。Windows的换行符是回车加换行Linux和macOS只有换行Git比较内容时两边不一样就误判成改动。解决方案是执行 git config --global core.autocrlf true然后 git add . 再 git commit -m fix line endings 把当前状态固化成一次提交后续就正常了。第四个合并冲突冒出满屏的 和 。遇到这个不要慌。打开冲突文件会看到两部分内容用 HEAD 分支名 分隔。 HEAD 和 之间是当前分支的内容 和 之间是对方分支的改动。你手工决定保留哪边或者两边都留删掉所有冲突标记保存文件然后 git add 这个文件再 git commit -m 合并分支 完成合并。注意冲突一次没解决完之前别急着推远程先在本地确认代码能跑。第五个改崩了想恢复。只要这个文件之前提交过恢复文件到最近一次提交的状态是件很容易的事git restore 文件名或者老一点的语法 git checkout -- 文件名效果一样。已经提交过的内容在Git里基本丢不了这句话就是你大胆动手的底气。5.2 新手最容易踩的坑清单把多年带新人的经验浓缩成一份避坑清单建议你存到备忘录里提交信息不要写111aaa123这类无意义内容过三个月你自己都看不懂。git add . 之前先 git status 看清楚要提交的东西别把编译产物、临时目录、日志文件带进去。涉及密码、密钥、令牌的文件绝对不要提交更别推到远程。正确做法是在项目根目录创建 .gitignore 文件把这类文件路径写进去。push 失败时千万克制住用 git push -f 强推的冲动。强推会用本地历史覆盖远程历史多人协作时属于爆炸级操作。拉取远程更新优先用 git pull --rebase而不是直接 git pull这样提交历史更好读冲突也更容易处理。6. 奶奶的私房经验让Git真正成为你的好帮手6.1 提交节奏别憋大招要小步快跑我经常看到有人写了一大堆代码才想起来提交一下这等于把Git用成了存档工具。Git真正的用法是小步提交每完成一个小的逻辑步骤就commit一次哪怕只是改了一个函数的参数名或者修了一个单词的拼写。这样做最直接的好处是某一步改崩了回滚到最近正常点的成本极低排查bug时git log也能精准定位是哪次提交引入了问题。我自己带技术团队时反复强调一条代码是长出来的不是憋出来的提交也一样。6.2 提交信息怎么写才算没白写好的提交信息应该让三个月后的你一眼就明白当时做了什么。我常用一个简单模板类型加内容。比如 fix: 修复登录功能在火狐浏览器下的报错feat: 新增用户头像上传功能refactor: 抽取数据库连接工具类。先写类型再写具体内容一目了然。没有硬性规定必须用这套格式但至少要做到过几个月回头看不用打开代码也知道这次提交干了什么。这也是一种工作素养进了团队别人看你的提交记录印象分一下就上去了。6.3 从今天开始用Git管理你手头的所有项目哪怕你现在只是写作业、做课程设计、练手抄代码我也建议从今天起就用Git。原因非常实在第一尽早养成肌肉记忆等真正进了团队协作不会手忙脚乱第二你的作品需要一个靠谱的备份地方别再把文件夹从最终版改到打死不改版了第三未来面试时聊到版本管理经验这是实打实的加分项。养成习惯的方式也很简单动手写代码前先 git init写完一小块就 add 和 commit当天结束时把内容 push 到远程这三分钟真不该省。说到底Git并没有多高深它就是把后悔药和保险箱合二为一的工具。我用了这么多年Git最深的体会是版本管理的核心不是命令背得多熟而是习惯养得多好。命令忘了随时查一下就会但那种代码永远改不坏、随时可以重来的踏实感只有真正持续用Git的人才能体会到。孩子别怕敲错命令Git没那么容易把你的代码弄丢放心大胆试吧。
返回列表