Git新手入门指南:从安装配置到常用命令与异常排查 📅 发布时间:2026/9/19 7:02:44 👁 浏览次数: 1. 环境准备先把Git装好再说1.1 Windows系统下Git安装的完整步骤我刚学Git那会儿第一件事就在Windows上装Git踩了一个坑下载慢。官网的服务器在海外直接点击下载速度低到让人怀疑人生。国内网络环境下建议优先使用国内镜像站下载比如清华镜像或阿里云镜像版本更新及时基本能跑满带宽。下载下来的文件一般是Git-x.x.x-64-bit.exe。双击后基本一路Next但有三个地方值得注意。第一个是选择编辑器默认是Vim。Vim这东西新手进去按什么键都退不出来我当年就是按了十几分钟键盘最后直接关窗口。如果你也没用过Vim在安装向导里一定要把编辑器改成VS Code或Notepad省得后面写commit信息时抓狂。第二个是调整PATH环境变量默认选项是Git from the command line and also from 3rd-party software。这个别改保持默认。它会把Git装进系统PATH这样你打开CMD、PowerShell也能直接输入git命令而不只是Git Bash里能用。第三个是行尾转换默认是Checkout Windows-style, commit Unix-style line endings。这个选项在多人协作时会省掉很多换行符之争因为Windows换行是CRLF(回车换行)Linux和macOS换行是LF(换行)Git会在提交时统一转成LF在检出时转成CRLF保持默认即可。安装完成后打开CMD或PowerShell执行git --version能输出版本号就说明装好了。如果提示“git不是内部或外部命令”大概率是安装时PATH没加进去或者装完后没重开终端。提示装完Git后一定要重开一个终端窗口再执行git命令否则环境变量不会生效。这个问题在Windows上经常出现不是你没装好是终端没刷新。1.2 macOS和Linux下Git安装的几种方式macOS上装Git方法有好几种。如果你装了Xcode还是Command Line Tools系统里可能已经有Git了终端里敲一下git --version试试。没有的话最省事的方式是执行xcode-select --install。如果不想装Apple那套工具链可以用Homebrew安装执行brew install git装完之后路径统一后续升级也简单。Linux用户更简单Ubuntu和Debian系执行sudo apt install gitCentOS或RHEL系执行sudo yum install git。包管理器装的一般不是最新版本但对学习和日常使用来说完全够用。如果非要最新版可以编译源码安装不过新手没必要折腾这个。各平台装完验证标准就一个终端里能执行git --version。命令能跑环境就是好的。2. 第一次配置Git身份信息、换行符、密钥和免密2.1 新手第一次配置name和emailGit有个特点每次提交都会记录提交人是谁。这个记录靠的是全局配置不是登录账号。所以安装完成后第一个配置就是设置用户名和邮箱git config --global user.name your_name git config --global user.email your_emailexample.com这个用户名和邮箱会写进每次commit里面别人通过Git日志能看到提交人信息。这里有个细节邮箱最好填真实邮箱尤其是Gitee或GitHub上常用的那个因为Gitee和GitHub会把提交邮箱和平台账号做匹配邮箱对不上提交记录就不会关联到你的账号头像和贡献次数都不显示。修改完配置后执行git config --list可以查看目前的配置重点看user.name和user.email有没有生效。如果只想查看某一项可以执行git config user.name。全局配置项有三个级别配置级别命令作用范围系统级git config --system影响整台机器所有用户全局级git config --global影响当前用户所有仓库仓库级git config --local只影响当前仓库新手阶段直接配--global就行省事。后面如果同时管理两个平台账号比如一个Gitee一个GitHub再用--local在具体仓库里覆盖全局配置。2.2 SSH密钥配置Gitee和GitHub通用方法配置完用户信息下一步就是配SSH密钥。新手经常会遇到这种情况克隆仓库时报错或者push推送时频繁弹窗要账号密码可能就是SSH密钥没配好。SSH密钥的作用可以类比成一把钥匙你把公钥放到远程托管平台上机器提交代码时用私钥做签名验证就可以免密操作。它比账号密码更安全也不用每次手动输入。生成密钥的命令是ssh-keygen -t rsa -b 4096 -C your_emailexample.com执行后默认文件位置在~/.ssh/id_rsa。一路回车按默认路径保存不要设置密码短语否则每次操作都要输一次口令等于没有免密。然后查看公钥内容cat ~/.ssh/id_rsa.pub复制这段公钥打开Gitee或GitHub的“设置”页面找到“SSH公钥”选项把内容粘贴进去。Gitee的入口在“头像菜单 - 设置 - SSH公钥”名称随意填公钥粘贴后提交保存。接着在终端执行ssh -T gitgitee.com如果看到“Hi xxx! You’ve successfully authenticated”的提示SSH配置就成功了。注意截图和文档里经常看到ssh-keygen -t rsa -C不写-b 4096为了兼容性可以按老方式生成但4096位在安全性上更靠谱。新项目建议直接用快捷键方式ssh-keygen -t ed25519 -C 邮箱Ed25519算法更先进Gitee和GitHub都支持。2.3 用TortoiseGit实现免密提交Git自带的Bash终端对Windows新手不友好尤其是不习惯命令行操作的朋友。TortoiseGit名字比较可爱图标是一只小乌龟作用是把Git操作集成到Windows右键菜单里点击菜单就能完成提交、拉取、推送等操作无需手敲命令。TortoiseGit可以从官方站点下载也可以在国内软件站下载。安装时它会自动检测本机Git安装路径如果检测不到手动指定也没有问题。小乌龟的免密配置让很多人摸不着头脑。核心思路是小乌龟的SSH客户端默认用的是PuTTY的plink.exe而我们在命令行用ssh-keygen生成的是OpenSSH格式的密钥两者格式不通用。所以你需要在安装目录下找到puttygen.exe用它加载已生成的私钥再转换成PuTTY格式保存为.ppk文件。具体操作分三步打开PuTTYgen程序点“Load”选择之前生成的无密码私钥文件如果文件管理器里看不到需要在文件类型里选“All Files”加载成功后点“Save private key”保存为 .ppk 文件然后在右键菜单的TortoiseGit - Settings - Git - Remote里填写远程仓库地址时把SSH客户端设为“TortoiseGitPLink.exe”并指定这个 .ppk 文件。这样配置完成后小乌龟推送代码就会走SSH密钥验证不再弹窗要密码。3. Git高频命令从本地仓库到远程仓库3.1 仓库初始化与克隆git init和git cloneGit操作的核心是仓库。你有两种方式获得仓库从零创建一个新仓库或者把远程已有仓库拉下来。从零创建进入项目目录后运行git init这会在当前目录生成一个隐藏的.git文件夹里面装着这个仓库的全部历史信息。之后项目里的改动Git才能追踪。如果远程仓库已经存在用克隆命令git clone 仓库地址仓库地址可以用 HTTPS 的也可以用 SSH 的。HTTPS地址以https://开头SSH地址以git开头。作为新手建议优先用SSH地址因为只要之前配好了密钥克隆和推送都免密体验更顺畅。用HTTPS克隆有时会报错“Login failed. Check API token or GitLab version”这类问题通常是认证方式或平台权限配置引起的。先检查远程地址是否正确再看仓库是否有访问权限必要时可以在凭据管理器中清理一下旧的凭据再重新克隆。克隆命令支持指定目录名比如git clone 仓库地址 my-project会把仓库放在名为my-project的目录里。不指定的话默认用仓库名创建目录。3.2 本地日常三连status、add、commit学习Git最核心的使用循环就三步查看状态、暂存修改、提交快照。每次想看看当前项目改了什么文件、哪些文件被跟踪、哪些文件被忽略执行git status输出内容会告诉你当前在哪个分支工作区有哪几个文件修改了哪几个文件是新文件还没被跟踪。然后执行git add 文件名或者一次性把当前目录所有变更文件都加入暂存区git add .注意一个细节git add .会把当前目录下所有未忽略的改动都暂存包括新文件、修改文件、删除文件。如果你的项目里有不该提交的缓存文件、日志文件需要靠.gitignore文件提前排除否则很容易误提交。暂存完成后执行git commit -m 提交说明引号里写的是什么意思是这次改动做了什么。Git日志里会保留每一次提交的说明写得越清晰后面回溯问题时越方便。新手容易犯的毛病是写“修改一下”“update”这种说明过一个月再看根本不知道当时改了什么。建议用简短的业务描述比如“修复登录接口空指针异常”“新增用户列表分页功能”。3.3 分支操作branch、switch和merge分支是Git最有价值的特性之一。你可以把分支理解成平行时空每个分支上做的改动互不影响最后再把成果合并到一起。查看当前分支列表和当前所在分支git branch创建新分支git branch feature-login切换分支git switch feature-loginGit 2.23之后推荐的切换命令是git switch老版本用的是git checkout。新手可以直接用git switch命令含义更清晰不容易犯糊涂。创建并切换可以合成一条git switch -c feature-login把分支合并到当前分支比如先切回主分支再执行合并git switch main git merge feature-login合并时如果两个分支改动的文件不重叠Git会自动完成合并。如果改动了同一个文件的同一行代码就会产生冲突。出现冲突后Git会在冲突文件里用特殊标记标出双方的改动格式大致是 HEAD 当前分支的代码 被合并分支的代码 feature-login解决冲突的方式很简单把不需要的代码删掉只保留你想要的部分然后git add该文件再执行git commit即可。3.4 与远程仓库交互push和pull本地仓库和远程仓库之间最常用的操作是两个一个是拉更新把远程仓库的最新代码取回来另一个是推代码把本地提交推送到远程。拉更新用git pull推送用git push如果是第一次把本地代码推送到新建的远程仓库需要先关联远程地址git remote add origin 仓库地址之后执行推送时指定上游分支git push -u origin main-u的作用是绑定关联关系后续再推送代码直接git push就行。这里有个新手特别容易踩的坑直接往别人更新过的远程分支上盲目push会被拒绝。原因是远程仓库已经有了你没有的提交Git为了安全默认不允许覆盖。解决办法是先git pull拉取远程改动本地解决冲突后再推送。养成“先pull后push”的习惯能少开很多周会。3.5 撤销与后悔药restore、reset和amendGit被很多人称为“后悔药仓库”就是因为它提供了多种撤回操作。我按使用场景拆开来写。场景一改了一个文件但还没执行git add想撤销工作区改动回到上次提交的状态git restore 文件名场景二已经执行了git add但还没提交想取消暂存git restore --staged 文件名场景三想撤回最近一次提交但保留改动内容重新提交git commit --amendgit commit --amend的使用场景很丰富。比如提交信息写错了执行这条命令后会打开编辑器可以修改提交信息。再比如提交之后发现忘了包含一个文件可以先把漏掉的文件git add再执行git commit --amendGit会把这次追加的改动并入上一次提交不会产生新的提交记录。还有一个更常见的用法代码评审时发现刚才提交的内容有问题改正后执行git add和git commit --amend远程push时如果远程已有历史记录需要git push --force-with-lease强制覆盖。但这里有个经验之谈只对还没合并到公共分支的提交执行amend如果这个提交已经被别人拉走了amend会重写历史导致别人本地仓库漂移协作时很容易出问题。4. 工具链集成VSCode、IDEA和GitKraken4.1 VSCode里装什么Git插件新手用VSCode做日常开发Git插件是提升效率的神器。VSCode自带集成的Git功能已经很好用左侧菜单栏有个“源代码管理”图标可以直观看到改动文件列表、输入提交说明、点击提交。需要额外安装几个插件让体验更上一层。第一是 GitLens装机量很大它能在代码行后面显示最后修改人、修改时间和提交说明看项目历史记录时非常方便。第二是 Git Graph它用图表方式展示分支和提交历史比命令行看日志直观得多。第三是 Git History用来查看单个文件的历史版本并做对比。VSCode集成Git也有个隐藏问题它默认使用系统PATH里的Git。如果打开VSCode时报错“无法识别git命令”需要在设置里搜索git.path手动指定git.exe的完整路径比如C:\Program Files\Git\bin\git.exe。4.2 IDEA里怎么用Git提交代码IDEA对Git的支持比较完整很多新手在IDEA里导入项目后直接改代码然后在顶部菜单选择“Commit”提交。这里有个细节很多人搞不懂IDEA的“Commit”弹窗下面有“Commit and Push”和“Commit”两个按钮直接点“Commit”只会提交到本地不会推送远程。正确的提交流程是改完代码后先提交到本地再执行“Push”。或者直接点“Commit and Push”一步到位。IDEA里切换分支也很方便右下角显示当前分支名点击后会弹出分支列表可以切换、新建、删除分支热键是CtrlK提交和CtrlShiftK推送。如果IDEA里登录远程仓库存证失败检查SSH配置。IDEA默认会使用内置的SSH实现也可以在“Settings - Version Control - Git”里把SSH可执行文件改成“Native”让它走本地系统SSH解决key不匹配的问题。4.3 GitKraken适合什么人身边不少同事用GitKraken这是一款Git图形化客户端支持Windows、macOS和Linux界面颜值高分支图展示得非常清晰。它尤其适合视觉型学习者命令行看git log --graph分支图容易眼花GitKraken直接给你显示成节点连线图一清二楚。GitKraken免费版对个人用户已经够用支持基本提交、拉取、推送、分支合并、冲突可视化解决。它同样支持SSH免密配置内置了密钥管理面板。我个人对小乌龟和GitKraken的感受是小乌龟胜在Windows右键集成打不出几个命令但日常操作覆盖得很全GitKraken胜在跨平台和界面清晰适合还在学Git逻辑的人。等后面接触交互式变基、子模块这些高级功能命令行仍然是兜底方案。5. 常见报错与疑难杂症排查记录5.1 fatal: not a git repository 的常见原因Git报错fatal: not a git repository (or any of the parent directories): .git出现频率很高。原因一般是当前目录不是Git仓库或者当前目录下的.git文件夹丢失、损坏。排查方向分四步一是确认当前目录执行pwdWindows上是print当前路径检查是否在项目目录下。新手容易犯的错是终端停留在桌面或用户主目录却敲git statusGit肯定找不到仓库。二是确认仓库是否被初始化过执行ls -a看有没有.git文件夹。如果是从远程仓库clone的项目.git一定存在如果是自己创建的新项目但没执行git init那自然不是仓库先初始化即可。三是检查.git目录是否存在但内容不完整比如之前手动删除过或杀毒软件误隔离了部分文件这种情况建议备份当前工作区代码后重新clone或初始化。四是检查磁盘挂载或文件权限问题在U盘或网络共享盘上使用Git仓库偶尔会遇到.git写入异常把项目拷贝到本机磁盘再试一次。5.2 连接远程仓库时的登录和权限错误连接远程仓库最常见的报错是Login failed. Check API token or GitLab version. Log in via Git if the versi...看起来一大串核心其实就是认证失败。先澄清一个概念用HTTPS访问远程仓库时Git需要账号凭据。在Gitee和GitHub上这种HTTPS操作的密码字段是一次性使用的访问令牌token不是平台登录密码。我们在平台设置里创建访问令牌然后把token粘贴到Git的凭据管理器里就能通过验证。如果之前配置过SSH但远程地址还是HTTPS格式Git会优先走HTTPS凭据。这时候要么把远程地址改掉执行git remote set-url origin gitgitee.com:用户名/仓库名.git要么在本地清理一下旧的HTTPS凭据重新输入token。5.3 误把敏感文件提交进仓库怎么办这个问题在团队开发中并不少见常见场景是配置了API密钥、数据库密码或私钥文件不小心git add .一并提交了。如果还没有推送撤销方大ф在于提交历史还不存在远端直接git reset HEAD^退回上一次提交并把敏感文件加入.gitignore。如果已经推送了流程稍微麻烦。先把文件从Git追踪中移除但保留本地文件git rm -r --cached 文件名然后修改.gitignore添加忽略规则提交并推送变更。但这里有个重要观念要建立历史提交里仍然留有这份敏感文件的记录如果项目仓库是公开的这份文件可能已经被别人看到了最稳妥的做法是立即重置或删除远程仓库生成新的密钥并替换所有受影响的值。再说一个日常防患的操作仓库初始化后第一时间在根目录创建.gitignore文件把*.env、.env.local、*.key、config/secrets.yml这类文件全部排除在外。养成“先创建.gitignore再写代码”的习惯比事后补救安心得多。5.4 提交信息写错了怎么改commit --amend的进阶使用前面提到git commit --amend可以修改最近一次提交信息这里补充它的两个进阶场景。第一种是给提交追加新文件比如你提交了登录功能但发现少提交了一个常量文件可以这样操作git add constants.js git commit --amend --no-edit--no-edit参数的意思是不要打开编辑器修改提交信息保持原提交说明不变只把新暂存的文件并进去。第二种是修改历史中更早的提交比如想修改前三条提交中的某一条。如果要操作的不是最近一次提交就不能直接用git commit --amend了推荐用交互式变基git rebase -i HEAD~3执行后Git会打开编辑器列出最近三条提交记录。想修改哪一条就把那行的pick改成edit保存退出。Git会停在第一个被标记的提交处此时修改需要调整的文件重新git add然后执行git commit --amend最后执行git rebase --continue继续处理下一个提交。新手用变基要谨慎因为它会重写提交哈希值。如果这些提交已经推送到公共分支不建议再改如果还没推送纯粹在本地练习放心操作。6. 进阶技巧worktree、stash和.gitignore的实用场景6.1 git worktree同时开多个分支工作区很多人可能不熟悉git worktree它是在Git 2.15版本加入的功能使用场景是你在项目A上开发一个功能临时接到需求要紧急切换到另一个分支修bug。老办法是stash当前进度再切换分支但stash在冲突多、改动大的时候容易混乱恢复时经常出问题。worktree的做法是在另一个目录里直接检出一个分支两个分支同时打开对应的目录互不干扰。创建命令git worktree add ../my-project-feature feature-login这样会在父目录下新建一个my-project-feature目录里面是feature-login分支的完整工作区。原项目目录保持当前分支的改动新目录里直接进入紧急修复。新功能开发完清理这个临时工作区的命令是git worktree remove ../my-project-feature查看所有worktree列表git worktree list这个功能对有“同时维护多个分支”需求的人来说非常实用。它要求仓库必须是本地完整克隆不能用于裸仓库。如果提示“worktree不能添加”检查一下当前仓库是否开启了core.worktreeConfig一般默认没开不会出问题。6.2 git stash临时保存进度最优雅的方案stash的中文意思是“藏匿”作用是把工作区未提交的修改临时保存起来让工作区恢复到干净状态之后再恢复这些修改。保存未提交的修改包括已暂存和未暂存的git stash保存时带上说明方便日后分辨git stash save 登录功能开发中恢复保存的修改git stash popgit stash pop会恢复最近一次保存的修改并删除这条stash记录。如果想恢复但不删除记录用git stash apply。查看stash列表用git stash list。有一个和它相关的常见需求只想恢复stash中的某个文件。可以先git stash show stash{0}查看内容也可以用git checkout stash{0} -- 文件名单独恢复某个文件。stash的使用经验谈它不适合长时间保存大改动只适合“临时打断一下”的场景。如果你认为一个改动会搁置好几天建议开一个分支来承载而不是一直塞在stash里。stash堆多了之后列表本身会变得混乱你很难记清每条stash对应的上下文。6.3 .gitignore提交之前必须先写好.gitignore是项目根目录下的一个纯文本文件作用是指定哪些文件或目录不被Git追踪。它还承担着拦截敏感文件的重任。一个常规的Java后段项目.gitignore一般长这样target/ *.class *.jar .idea/ *.iml .DS_Store *.log .envNode.js项目则增加node_modules/ dist/规则优先级是后写的规则可以覆盖先写的规则用!开头的行表示例外即排除忽略恢复追踪。比如*.log !important.log意思是所有.log文件都忽略但important.log不忽略。.gitignore只对尚未被Git追踪的文件生效。如果某个文件之前已经在版本控制里后来加入.gitignoreGit不会自动停止追踪这个文件需要先执行git rm --cached 文件名把它从追踪列表里移除。有一个容易被忽略的点.gitignore本身的变更也要提交到仓库。它属于项目配置的一部分团队协作时需要同步维护。每个项目成员在开发环境引入新的生成文件时往.gitignore里补一条规则这是很好的团队习惯。7. 我个人的几个小习惯最后分享一下我用Git这几年养成的几个小习惯不一定适合所有人但至少能帮你少踩几个坑。第一个习惯是commit信息写清楚。每次提交我都会按照“类型范围描述”的格式写feat: 新增订单导出功能、fix: 修复支付回调验签失败、docs: 更新README。这样看Git日志时一眼就知道每条提交做了什么排查问题时效率高很多。第二个习惯是提交前检查。执行git status看变更文件列表执行git diff --stat看变更规模和行数。如果发现不需要提交的文件混进来了先处理它再提交。这个习惯能最大限度避免误提交密钥和临时文件。第三个习惯是善用git log --oneline --graph。这个命令以一行一个提交的形式显示历史记录并带有分支图。看历史变更比图形界面的列表信息更紧凑配合git show 提交哈希可以查看任意一次提交的具体改动。第四个习惯是遇到不认识的命令先执行git help 命令名。Git内置的帮助文档里有每个命令的参数说明和例子不用到处搜索而且永远是最新版本。对新手的友好程度比很多教程还高。如果你刚接触Git不用试图把所有功能一次性学完先把基本的初始化、提交、推送、拉取、分支合并跑通把SSH免密配置做好日常开发就够用了。后面遇到具体需求比如要改历史提交、要处理冲突再回头翻对应章节进步会快很多。