Git 操作概要

Git 操作概要

文章目录

1. Git 概述

什么是 Git?

Git 是一个 分布式版本控制系统(DVCS),由 Linux 之父 Linus Torvalds 于 2005 年创建,用于高效管理代码的变更历史。

核心特点

  • 分布式:每个开发者本地都有一份完整的代码仓库(包括完整历史),不依赖中央服务器。
  • 快照式存储:Git 不保存“文件差异”,而是对每次提交(commit)保存整个项目的一个快照
  • 分支轻量:创建、切换、合并分支成本极低,鼓励基于分支的开发流程(如 Git Flow、GitHub Flow)。
  • 数据完整性:所有内容通过 SHA-1 哈希校验,确保历史不可篡改。

常见协作平台

  • GitHub
  • GitLab
  • Gitee(码云)
  • Bitbucket
  • GitCode
💡 Git ≠ GitHub!
Git 是工具GitHub 是托管 Git 仓库的网站

2. Git 常用命令

基础配置

# ⭐配置用户名和邮箱(关联提交记录,需与Git平台账号一致)git config --global user.name "你的名字"git config --global user.email "你的邮箱@xxx.com"# 查看配置信息git config --list 

本地操作

命令说明
git init初始化一个新的 Git 仓库
git clone <url>克隆远程仓库到本地
git status查看工作区状态(哪些文件被修改/未跟踪)
git add <file>git add .将文件添加到暂存区(staging area)
git commit -m "message"提交暂存区内容到本地仓库
git log / git log --oneline查看提交历史
git diff查看工作区与暂存区的差异
git restore <file>撤销工作区修改(Git 2.23+) 旧版用 git checkout -- <file>

分支管理

命令说明
git branch列出本地分支
git branch <name>创建新分支
git checkout <branch>git switch <branch>切换分支
git merge <branch>合并指定分支到当前分支
git branch -d <name>删除已合并的分支
git branch -D <name>强制删除分支

远程协作

命令说明
git remote -v查看远程仓库地址
git fetch从远程拉取最新历史(不自动合并)
git pull= git fetch + git merge,拉取并合并
git push origin <branch>推送本地分支到远程
git push -u origin <branch>首次推送并设置 upstream(后续可直接 git push

撤销与重置

命令说明
git reset --soft HEAD~1撤销最后一次提交,保留更改在暂存区
git reset --mixed HEAD~1(默认)撤销提交,保留更改在工作区
git reset --hard HEAD~1彻底丢弃最后一次提交及所有更改(慎用!)
git revert <commit>创建一个新提交来“反向”撤销某次提交(安全,适用于已推送的提交)

3. Git 一些特殊场景

🎯 场景 1:误删文件,如何恢复?

# 如果已提交过git checkout <commit-id> -- <file># 如果刚 add 但未 commitgit restore --staged <file># 先取消暂存git restore <file># 再恢复工作区

🎯 场景 2:提交信息写错了

git commit --amend -m "正确的提交信息"# 注意:仅限未 push 的最新提交

🎯 场景 3:想把某次提交“移动”到另一个分支

# 方法:使用 cherry-pickgit checkout target-branch git cherry-pick <commit-id>

🎯 场景 4:解决冲突(Conflict)

  1. 手动编辑冲突文件(查找 <<<<<<<, =======, >>>>>>>
  2. 保留需要的代码,删除标记
  3. git add <file> 标记冲突已解决
  4. git commit 完成合并

🎯 场景 5:临时保存工作进度(不提交)

注:恢复 stash 之前,当前分支不可以新增或变更其他文件,否则会恢复失败
git stash # 保存当前修改到“藏匿区”git checkout other-branch # ...做其他事...git stash pop # 恢复之前的工作

🎯 场景 6:回滚已推送到远程的提交

❌ 不要用 reset --hard + push -f(会破坏他人历史)
✅ 正确做法:
git revert <bad-commit-id># 生成一个“反向”提交git push # 安全推送

🎯 场景 7:查看某行代码是谁改的?

git blame <file># 显示每行最后修改的 commit 和作者

🎯 场景 8:清理未跟踪的文件

git clean -n # 预览将被删除的文件git clean -f # 强制删除未跟踪文件git clean -fd # 同时删除目录

🎯 场景 9:推送一个新项目

# 创建一个新仓库git clone https://gitcode.com/novaPortal/nova-portal.git cd nova-portal echo"# nova-portal">> README.md gitadd README.md git commit -m "add README"git branch -m main git push -u origin main # 推送现有的文件cd existing_folder git init git remote add origin https://gitcode.com/xxx/xxx-xxx.git gitadd.git commit -m "Initial commit"git branch -m main git push -u origin main # 推送现有的 Git 仓库cd existing_repo git remote rename origin old-origin git remote add origin https://gitcode.com/novaPortal/nova-portal.git git push -u origin --all git push -u origin --tags 

详解:

# ==============================================# Git 本地仓库初始化并推送到 GitCode 远程仓库# 适用场景:本地已有项目文件夹,首次推送到远程空仓库# ==============================================# 1. 进入本地已存在的项目文件夹(替换为实际文件夹路径)cd existing_folder # 2. 初始化本地 Git 仓库(生成 .git 隐藏目录,存储版本信息)# 执行后该文件夹成为 Git 可管理的仓库git init # 3. 关联远程 GitCode 仓库(origin 是远程仓库的默认别名,可自定义)# 替换 https://gitcode.com/xxx/xxx-xxx.git 为实际的远程仓库地址git remote add origin https://gitcode.com/xxx/xxx-xxx.git # 4. 将本地文件夹下所有文件/文件夹添加到 Git 暂存区# "." 表示当前目录下所有内容,也可指定具体文件/文件夹gitadd.# 5. 将暂存区内容提交到本地仓库,备注为 "Initial commit"(首次提交规范备注)# -m 后必须跟提交备注,描述本次提交的内容git commit -m "Initial commit"# 6. 将本地默认分支 master 重命名为 main(符合现代 Git 分支命名规范,GitHub/GitCode 主流默认分支为 main)# 若远程仓库默认分支是 master,可跳过此步骤git branch -m main # 7. 将本地 main 分支推送到远程 origin 仓库,并建立本地与远程分支的关联(-u 等价于 --set-upstream)# 后续推送可简化为 git push,拉取为 git pullgit push -u origin main 

💡 最佳实践建议

  • 小步提交:每次提交只做一件事,信息清晰。
  • 分支开发:不要直接在 main/master 上开发。
  • Pull Before Push:推送前先拉取,避免冲突。
  • .gitignore:合理配置忽略日志、编译产物等。
  • 不要 force push 公共分支:除非团队约定且你知道后果。

总结

维度要点
本质分布式版本控制系统
核心对象工作区 → 暂存区 → 本地仓库 → 远程仓库
灵魂操作add / commit / branch / merge / pull / push
高级技巧revert / cherry-pick / stash / reflog(救命命令)
📚 推荐学习资源:官方 Pro Git 书(免费中文版:https://git-scm.com/book/zh/v2)可视化练习:https://learngitbranching.js.org

掌握 Git,是每个开发者提升协作效率和代码管理能力的关键一步!

Read more

Windows环境Git安装教程(下载Git安装包、安装Git、验证Git是否安装成功、设置名字和邮箱)

Windows环境Git安装教程(下载Git安装包、安装Git、验证Git是否安装成功、设置名字和邮箱)

文章目录 * 1. 下载Git安装包 * 1.1 通过清华大学开源软件镜像站下载(推荐) * 1.2 通过Git官网下载 * 1.3 通过联想电脑管家下载 * 2. 安装Git(一路点击Next即可) * 3. 验证Git是否安装成功 * 4. 设置个人信息(名字和邮箱) 1. 下载Git安装包 1.1 通过清华大学开源软件镜像站下载(推荐) 下载地址:https://mirrors.tuna.tsinghua.edu.cn/github-release/git-for-windows/git/ https://mirrors.tuna.tsinghua.edu.cn/github-release/git-for-windows/git/ 点击 LatestRelease/ 目录 下载

By Ne0inhk
除夕夜,阿里炸场!Qwen3.5 开源,397B 吊打自家万亿旗舰

除夕夜,阿里炸场!Qwen3.5 开源,397B 吊打自家万亿旗舰

除夕夜,阿里上了一盘硬菜。 Qwen3.5-397B-A17B。Qwen3.5 系列的第一个开源模型。 3970 亿总参数,每次推理只激活 170 亿。 Apache 2.0 协议,完全免费。 阿里之前最强的旗舰模型 Qwen3-Max,万亿参数级别,闭源。 而这个新开源的 3970 亿参数模型,基座性能和 Qwen3-Max 持平。 用不到一半的参数,打平了万亿参数的上一代。 在 32K 上下文下,Qwen3.5 的解码吞吐量是 Qwen3-Max 的 8.6 倍。256K,这个数字是 19 倍。 老旗舰被新模型按在地上摩擦。 除夕发模型,阿里在想什么 2026 年的春节,已经不是春节了。

By Ne0inhk
【Git】GitHub 连接失败解决方案:Failed to connect to github.com port 443 after 21090 ms: Couldn’t connect to se

【Git】GitHub 连接失败解决方案:Failed to connect to github.com port 443 after 21090 ms: Couldn’t connect to se

文章目录 * 一、使用 VPN 环境下的解决方案 * 1. 检查当前代理设置 * 2. 配置 Git 使用代理 * 3. 验证代理设置是否生效 * 4. 刷新 DNS 缓存 * 5. 重新尝试 Git 操作 * 二、未使用 VPN 环境下的解决方案 * 1. 取消 Git 配置的代理 * 2. 验证代理设置已成功移除 * 3. 重试 Git 操作 * 三、总结 * 使用 VPN 的解决方案: * 未使用 VPN 的解决方案: 在使用 Git 进行代码管理时,可能会遇到“Failed to connect

By Ne0inhk