2026/4/6 3:59:10
网站建设
项目流程
ipad 设计网站,免费下载app软件网站,网站内页怎么做,简述动态和静态网页的区别文章目录目录引言环境准备一、仓库初始化与首次提交1.1 初始化 Git 仓库1.2 创建 .gitignore 文件1.3 首次提交技术解析二、分支创建与多轮小步提交2.1 切出 feature 分支2.2 2-3 次小步提交第一次提交#xff1a;新增功能基础文件第二次提交#xff1a;实现核心逻辑第三次提…文章目录目录引言环境准备一、仓库初始化与首次提交1.1 初始化 Git 仓库1.2 创建 .gitignore 文件1.3 首次提交技术解析二、分支创建与多轮小步提交2.1 切出 feature 分支2.2 2-3 次小步提交第一次提交新增功能基础文件第二次提交实现核心逻辑第三次提交修复参数校验问题技术解析三、分支合并merge 选型及理由3.1 合并到 main 分支3.2 选型理由merge vs rebase四、制造并解决合并冲突4.1 制造冲突步骤1feature 分支修改目标行步骤2main 分支修改同一行步骤3触发合并冲突4.2 解决冲突步骤1查看冲突文件步骤2手动解决冲突步骤3完成合并提交技术解析五、版本回滚git revert 演示5.1 查看提交历史5.2 执行 git revert5.3 补充cherry-pick 迁移修复提交技术解析六、GitHub 平台适配说明总结核心要点回顾目录引言若对您有帮助的话请点赞收藏加关注哦您的关注是我持续创作的动力有问题请私信或联系邮箱funian.gmgmail.comGit 作为分布式版本控制系统是开发者日常协作、代码版本管理的核心工具。本文将通过空目录实操的方式按步骤演示 Git 最核心的基础操作初始化、分支管理、提交、合并、冲突解决、版本回滚并结合技术解析说明背后的设计逻辑帮助新手快速掌握 Git 核心用法。环境准备本次演示基于 Linux/macOS 终端Windows 可使用 Git Bash先创建空目录作为演示仓库# 创建并进入空目录mkdirgit-democdgit-demo一、仓库初始化与首次提交1.1 初始化 Git 仓库git init是创建 Git 仓库的第一步会在当前目录生成隐藏的.git文件夹仓库核心配置/版本记录都存于此# 初始化仓库gitinit# 验证查看.git目录Linux/macOSls-la|grep.git输出示例drwxr-xr-x 9 user staff 288 Jan 9 10:00 .git说明初始化成功。1.2 创建 .gitignore 文件.gitignore用于指定 Git 需忽略的文件/目录如日志、缓存、IDE 配置等避免无关文件提交到仓库。创建并编辑.gitignore# 创建.gitignore文件touch.gitignore# 编辑内容示例忽略常见无用文件cat.gitignoreEOF # 日志文件 *.log # 缓存目录 node_modules/ # IDE配置VSCode .vscode/ # 系统临时文件 .DS_Store EOF1.3 首次提交提交是 Git 保存版本的核心操作需遵循清晰的提交信息规范推荐 Conventional Commits 规范类型描述# 将.gitignore加入暂存区gitadd.gitignore# 首次提交提交信息清晰描述操作gitcommit -mfeat: 初始化仓库添加.gitignore忽略规则提交成功后可通过git log查看提交记录gitlog --oneline# 输出示例f876541 (HEAD - main) feat: 初始化仓库添加.gitignore忽略规则技术解析git init初始化本地仓库生成.git目录包含 objects、refs、config 等核心文件.gitignore规则支持通配符*、目录/、注释#优先级为「本地.gitignore 全局.gitignore .git/info/exclude」提交信息规范类型(可选作用域): 描述如 feat/fix/docs/style/refactor/test/chore便于追溯和自动化生成 CHANGELOG。二、分支创建与多轮小步提交2.1 切出 feature 分支Git 分支是「轻量级指针」feature/topic是行业通用的功能分支命名规范topic为功能主题用于隔离功能开发# 从main分支创建并切换到feature/user-login分支推荐新命令git switchgitswitch -c feature/user-login# 等价于旧命令git checkout -b feature/user-login# 验证分支状态gitbranch# 输出示例* feature/user-login# main2.2 2-3 次小步提交「小步提交」是 Git 最佳实践每次提交只完成一个小功能/修复便于追溯、回滚和代码评审。第一次提交新增功能基础文件# 创建用户登录功能文件touchuser.js# 写入基础代码echo// 用户登录模块user.js# 暂存提交gitadduser.jsgitcommit -mfeat: 新增用户登录模块基础文件第二次提交实现核心逻辑# 修改user.js添加登录函数catuser.jsEOF // 登录函数 function login(username, password) { return { code: 200, msg: 登录成功 }; } EOF# 提交gitcommit -amfeat: 实现用户登录核心函数# -am 等价于git add git commit仅适用于已追踪文件第三次提交修复参数校验问题# 修改user.js补充参数校验sed-i3i\ if (!username || !password) return { code: 400, msg: 参数不能为空 };\ user.js# 提交gitcommit -amfix: 补充登录参数非空校验技术解析分支本质refs/heads/目录下的文本文件存储对应提交的哈希值小步提交优势单个提交逻辑清晰便于 Code Review回滚时仅影响局部功能风险可控多人协作时减少冲突概率。三、分支合并merge 选型及理由3.1 合并到 main 分支合并分支有两种核心方式merge和rebase本次选择merge更适合新手保留分支历史# 切换回main分支gitswitch main# 合并feature/user-login到maingitmerge feature/user-login --no-ff# --no-ff强制创建合并提交保留分支历史便于追溯合并成功后git log --graph --oneline可查看分支合并图谱* a1b2c3d (HEAD - main) Merge branch feature/user-login |\ | * e4f5g6h (feature/user-login) fix: 补充登录参数非空校验 | * i7j8k9l feat: 实现用户登录核心函数 | * m0n1o2p feat: 新增用户登录模块基础文件 |/ * f876541 feat: 初始化仓库添加.gitignore忽略规则3.2 选型理由merge vs rebase操作特点适用场景merge保留分支历史生成合并提交无代码篡改团队协作、公共分支main/developrebase线性历史无合并提交重写提交哈希个人开发分支、功能分支合入前整理本次选 merge 的核心原因新手易理解合并记录清晰可通过git log直观看到功能分支的所有提交无风险rebase会改写提交历史若分支已推送到远程可能导致协作冲突merge更安全可追溯保留「功能开发-合并」的完整上下文便于后续问题定位。四、制造并解决合并冲突4.1 制造冲突冲突产生的核心原因同一文件的同一行被不同分支修改。步骤1feature 分支修改目标行# 切回feature分支修改user.js第5行登录提示gitswitch feature/user-login# 修改登录提示文案sed-is/msg: 登录成功/msg: 登录成功欢迎回来/user.js# 提交修改gitcommit -amfeat: 优化登录成功提示文案步骤2main 分支修改同一行# 切回main分支修改同一行不同文案gitswitch mainsed-is/msg: 登录成功/msg: 登录成功您的账号安全有效/user.js# 提交修改gitcommit -amfeat: 调整登录成功提示语步骤3触发合并冲突# 合并feature分支到main触发冲突gitmerge feature/user-login终端会提示冲突Auto-merging user.js CONFLICT (content): Merge conflict in user.js Automatic merge failed; fix conflicts and then commit the result.4.2 解决冲突步骤1查看冲突文件gitstatus# 输出示例# both modified: user.js步骤2手动解决冲突打开user.js冲突区域会被标记// 用户登录模块// 登录函数functionlogin(username,password){if(!username||!password)return{code:400,msg:参数不能为空};return{code:200,msg:登录成功};HEADreturn{code:200,msg:登录成功您的账号安全有效};return{code:200,msg:登录成功欢迎回来};feature/user-login} HEADmain 分支的代码冲突分割线 feature/user-loginfeature 分支的代码。手动修改为最终想要的内容比如合并两者的优点// 用户登录模块// 登录函数functionlogin(username,password){if(!username||!password)return{code:400,msg:参数不能为空};return{code:200,msg:登录成功欢迎回来您的账号安全有效};}步骤3完成合并提交# 标记冲突文件已解决gitadduser.js# 完成合并提交gitcommit -mfix: 解决user.js登录提示文案合并冲突技术解析冲突本质Git 无法自动判断同一行代码的优先级需人工介入冲突解决核心保留正确代码删除冲突标记//避免冲突频繁拉取远程分支、小步提交、按模块分工开发。五、版本回滚git revert 演示Git 回滚有两种核心方式git revert安全推荐和git reset危险不建议公共分支使用。5.1 查看提交历史gitlog --oneline# 输出示例假设需回滚“调整登录提示语”的提交# 9876543 (HEAD - main) fix: 解决user.js登录提示文案合并冲突# 8765432 feat: 调整登录成功提示语# 7654321 Merge branch feature/user-login# ...5.2 执行 git revertgit revert会创建一个反向提交撤销指定提交的修改且保留原提交历史无数据丢失# 回滚“调整登录成功提示语”的提交哈希为8765432gitrevert8765432若有冲突按第四步的方法解决后执行git commit即可。5.3 补充cherry-pick 迁移修复提交git cherry-pick用于「挑选单个提交」迁移到其他分支比如将 feature 分支的修复提交迁移到 main# 查看feature分支的修复提交哈希gitlog feature/user-login --oneline# 输出示例e4f5g6h fix: 补充登录参数非空校验# 切回main分支迁移该提交gitswitch maingitcherry-pick e4f5g6h技术解析回滚方式原理适用场景风险git revert创建反向提交撤销修改公共分支main/develop无git reset移动HEAD指针删除提交本地私有分支、未推送提交高数据丢失git cherry-pick复制单个提交到当前分支跨分支迁移修复/小功能提交低仅复制提交六、GitHub 平台适配说明以上操作均为本地操作若需推送到 GitHub补充以下步骤# 1. 在GitHub创建空仓库复制仓库地址# 2. 添加远程仓库gitremoteaddorigin https://github.com/你的用户名/git-demo.git# 3. 推送到GitHub-u 绑定本地main到远程origin/maingitpush -u origin main# 4. 推送feature分支到远程gitpush origin feature/user-login总结核心要点回顾仓库初始化git init生成.git目录.gitignore 规范忽略文件首次提交需清晰描述分支管理feature/topic命名规范小步提交便于追溯合并优先选merge保留历史冲突解决冲突源于同一行多分支修改手动删除冲突标记并保留正确代码git add标记解决版本回滚公共分支用git revert安全私有分支可试用git reset跨分支迁移提交用git cherry-pick。