✨博客主页 https://blog.csdn.net/m0_63815035?typeblog《博客内容》大数据、AI开发、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识博客专栏https://blog.csdn.net/m0_63815035/category_11954877.html欢迎点赞 收藏 ⭐留言 本文为学习笔记资料如有侵权请联系我删除疏漏之处还请指正大厦之成非一木之材也大海之阔非一流之归也✨目录一、Git 概述1.1 什么是版本控制系统1.2 集中式 vs 分布式1.3 Git 的诞生二、Git 安装与配置2.1 下载安装2.2 全局配置必须三、创建版本库仓库3.1 初始化仓库3.2 添加文件到仓库四、基本操作命令4.1 查看状态4.2 查看修改内容4.3 查看提交历史4.4 版本回退五、工作区、暂存区和版本库六、撤销修改6.1 工作区修改未 add6.2 已 add 但未 commit6.3 已 commit 但未 push七、删除文件八、分支管理重点8.1 分支基本命令8.2 合并冲突8.3 分支管理策略九、远程仓库9.1 远程仓库类型9.2 本地与远程仓库的关联方式一克隆远程仓库到本地方式二已有本地仓库关联远程仓库9.3 推送和拉取9.4 SSH 认证推荐9.5 解决冲突十、忽略文件 .gitignore十一、IDEA 集成 Git11.1 配置 Git 路径11.2 基本操作11.3 忽略文件插件十二、Git 可视化工具十三、常用命令速查表十四、常见问题十五、结尾Git 是目前最流行的分布式版本控制系统由 Linux 之父 Linus Torvalds 在两周内开发完成。本文从零开始讲解 Git 的安装、基本命令、分支管理、远程仓库协作等内容适合初学者和日常开发参考。一、Git 概述1.1 什么是版本控制系统版本控制系统用于跟踪文件的变化记录每次修改并允许用户回退到任意历史版本。主要解决以下问题多人协作时代码合并误删或误改后恢复查看修改历史1.2 集中式 vs 分布式类型代表特点集中式CVS、SVN中央服务器保存所有版本需联网才能工作速度慢中央服务器单点故障分布式Git每个开发者本地都有完整版本库无需联网即可提交、查看历史安全性高速度快Git 的优势不依赖网络、分支管理强大、速度极快、数据完整性高。1.3 Git 的诞生2002 年前Linus 手动合并 Linux 内核代码。使用 BitKeeper 免费版后因社区成员破解协议BitMover 收回授权。Linus 花两周用 C 语言写出了 Git一个月后 Linux 源码即由 Git 管理。二、Git 安装与配置2.1 下载安装官网https://git-scm.com/downloads根据操作系统选择相应版本Windows 下为.exe安装包。安装时建议选择Use Git from the Windows Command Prompt可在命令行使用 git 命令选择Checkout Windows-style, commit Unix-style line endings跨平台换行符处理选择Use MinTTY终端2.2 全局配置必须打开 Git Bash设置用户名和邮箱用于标识提交者gitconfig--globaluser.nameYour Namegitconfig--globaluser.emailyour_emailexample.com查看配置gitconfig--list注意--global表示全局配置对当前用户所有仓库生效。也可以针对单个仓库去掉--global。三、创建版本库仓库版本库repository是一个被 Git 管理的目录所有文件的变化都会被 Git 跟踪。3.1 初始化仓库mkdirmyprojectcdmyprojectgitinit执行后会在当前目录下生成隐藏的.git文件夹这是 Git 的核心不要随意修改。3.2 添加文件到仓库在仓库目录下创建或修改文件例如readme.txt。将文件添加到暂存区gitaddreadme.txt# 添加单个文件gitadd.# 添加当前目录所有变化包括新文件和修改将暂存区内容提交到仓库gitcommit-m提交说明Git 需要两步提交的原因add可以多次添加不同文件commit一次性提交所有已添加的修改。四、基本操作命令4.1 查看状态gitstatus显示当前工作区和暂存区的状态提示哪些文件被修改、新增或删除以及哪些修改已添加到暂存区。4.2 查看修改内容gitdiff# 查看工作区与暂存区的差异gitdiff--cached# 查看暂存区与最新提交的差异gitdiffHEAD# 查看工作区与最新提交的差异gitdiffcommit1commit2# 比较两个提交的差异4.3 查看提交历史gitlog# 详细日志gitlog--oneline# 一行显示简洁信息gitlog--graph--oneline# 图形化显示分支结构4.4 版本回退# 回退到上一个版本HEAD 表示当前版本HEAD^ 上一个HEAD~n 上 n 个gitreset--hardHEAD^# 回退到指定提交使用 commit id 的前几位gitreset--hardcommit-id# 查看所有历史命令可用于找回回退后的提交 idgitrefloggit reset有三种模式--soft仅移动 HEAD不修改暂存区和工作区--mixed默认移动 HEAD重置暂存区保留工作区修改--hard移动 HEAD重置暂存区和工作区危险会丢失未提交的修改五、工作区、暂存区和版本库工作区Working Directory本地文件夹能看到的所有文件。暂存区Stage / Index.git/index文件临时保存要提交的修改。版本库Repository.git目录存储所有提交的版本和分支信息。工作区 → git add → 暂存区 → git commit → 版本库当前分支每次git add将工作区的修改添加到暂存区git commit将暂存区快照提交到当前分支。六、撤销修改6.1 工作区修改未 add丢弃工作区的修改回到最近一次git add或git commit的状态gitcheckout --file注意--很重要没有它表示切换分支。6.2 已 add 但未 commit将文件从暂存区移除但保留工作区修改gitreset HEADfile然后按工作区方式撤销。或者直接gitrm--cachedfile# 仅从暂存区删除工作区保留6.3 已 commit 但未 push使用版本回退git reset --hard HEAD^或修改最后一次提交gitcommit--amend# 修改最后一次提交的说明或添加遗漏的文件七、删除文件从工作区和暂存区删除文件gitrmfile提交删除操作gitcommit-m删除文件如果误删了工作区文件但尚未git rm可用git checkout -- file恢复。八、分支管理重点分支是 Git 最强大的特性允许在独立线上开发新功能最后合并回主分支。8.1 分支基本命令命令说明git branch列出所有本地分支当前分支前有*git branch name创建分支git checkout name切换分支git checkout -b name创建并切换到该分支git merge name将name分支合并到当前分支git branch -d name删除分支已合并git branch -D name强制删除未合并的分支8.2 合并冲突当两个分支修改了同一文件的同一位置时合并会产生冲突需要手动解决。步骤Git 会在冲突文件中用、、标记不同分支的内容。编辑文件删除标记保留想要的内容。执行git add file标记为已解决。git commit完成合并。提示合并前确保工作区干净git status无未提交修改合并后及时提交。8.3 分支管理策略master分支主分支保持稳定可发布状态。dev分支开发分支日常开发在此进行。feature-xxx分支临时功能分支完成后合并回 dev 并删除。推荐使用git merge --no-ff保留分支历史。九、远程仓库9.1 远程仓库类型GitHub全球最大开源托管平台。Gitee码云国内常用速度快。GitLab企业自建私有仓库。9.2 本地与远程仓库的关联方式一克隆远程仓库到本地gitclone远程仓库地址[本地目录名]例如git clone https://github.com/username/repo.git方式二已有本地仓库关联远程仓库gitremoteaddorigin远程仓库地址origin是远程仓库的别名可自定义。9.3 推送和拉取# 推送本地分支到远程首次需指定上游分支gitpush-uorigin master# 后续推送gitpush# 拉取远程更新并合并到当前分支gitpull# 拉取远程更新但只下载不合并gitfetch重要提交前先git pull避免冲突。9.4 SSH 认证推荐使用 HTTPS 每次 push 需输入用户名密码使用 SSH 可免密。生成 SSH 密钥对ssh-keygen-trsa-Cyour_emailexample.com一路回车默认保存在~/.ssh/id_rsa。将公钥~/.ssh/id_rsa.pub的内容添加到远程仓库的 SSH 公钥设置中GitHub/Gitee 都在个人设置中。测试连接ssh-Tgitgithub.com# GitHubssh-Tgitgitee.com# Gitee9.5 解决冲突多人协作时如果本地提交和远程提交有冲突git push会被拒绝。流程git pull拉取远程更新。Git 自动合并或产生冲突手动解决冲突。git add .和git commit -m resolve conflict。git push。十、忽略文件.gitignore项目中有些文件不需要 Git 管理如编译产物、日志、本地配置可以在仓库根目录创建.gitignore文件写入忽略规则。常见规则示例# 忽略所有 .class 文件 *.class # 忽略 target 目录 /target/ # 忽略 .idea 目录 .idea/ # 不忽略特定文件 !important.log注意.gitignore只能忽略未跟踪的文件。如果文件已被 Git 跟踪需先git rm --cached移除跟踪。十一、IDEA 集成 Git11.1 配置 Git 路径File - Settings - Version Control - Git设置Path to Git executable为git.exe例如D:\application\Git\bin\git.exe。11.2 基本操作初始化仓库VCS - Enable Version Control Integration选择 Git。Add右键文件 →Git - Add。CommitCtrl K或VCS - Commit。Push/PullCtrl Shift K/Ctrl T。查看历史右键文件 →Git - Show History。分支管理右下角点击分支名 →New Branch/Merge等。11.3 忽略文件插件安装.ignore插件可生成常用语言的.gitignore模板。十二、Git 可视化工具除了命令行也可使用 GUI 工具工具特点Git GUIGit 自带功能简单SourceTree免费支持 Windows/Mac图形化分支显示TortoiseGitWindows 资源管理器集成文件图标状态提示GitHub Desktop官方出品简洁易用IDEA 内置与 IDE 结合紧密十三、常用命令速查表命令说明git init初始化本地仓库git clone url克隆远程仓库git add file添加文件到暂存区git commit -m msg提交暂存区内容git status查看状态git diff查看差异git log查看提交历史git reset --hard commit回退到指定版本git reflog查看所有操作记录git branch查看分支git checkout -b branch创建并切换分支git merge branch合并分支git branch -d branch删除分支git remote add origin url关联远程仓库git push -u origin master首次推送git pull拉取并合并git clone url克隆远程仓库git stash暂存当前工作区常用于切换分支git stash pop恢复暂存的工作区git tag tagname打标签git tag查看标签十四、常见问题如何修改最近一次提交的注释gitcommit--amend-m新的注释忘记--global配置了用户信息如何修改gitconfig user.name新名字gitconfig user.email新邮箱git pull总是提示合并如何避免使用git pull --rebase保持提交历史线性。如何放弃所有本地修改强制同步远程gitfetch--allgitreset--hardorigin/master如何将本地分支推送到远程并设置关联gitpush-uorigin 分支名十五、结尾Git 是当今软件开发必备工具掌握以下内容即可应对日常开发基本操作add,commit,status,diff,log版本管理reset,reflog分支操作branch,checkout,merge,conflict resolution远程协作clone,push,pull,fetch建议新手在本地创建练习仓库反复尝试各种命令结合git status观察变化逐步建立对 Git 工作流的理解。实际项目中务必养成“先 pull 再 push”的习惯遇到冲突冷静解决即可。今天这篇文章就到这里了大厦之成非一木之材也大海之阔非一流之归也。感谢大家观看本文