当前位置: 首页 > news >正文

从本地存档到协作开发的Git简单使用

概念

  1. 工作区 : 在本地实际进行文件操作的目录 .
  2. 暂存区 : 类似于缓冲区 , 用于记录准备进行下一次提交的内容 .
  3. 本地仓库 : 储存在本地的完整版本库 , 包含项目的提交历史 , 分支信息和标签等 .
  4. 远程仓库 : 部署在远程服务器的版本库 , 通常用于协作开发 .

文件状态

  1. Untracked 未追踪 : 新创建或移动复制到本项目目录的文件 , 在未执行暂存命令前 , 文件处于未追踪状态 .
  2. Committed 已提交 : 将已暂存文件进行提交后的文件 , 已安全保存在本地仓库 , 文件的内容被记录为一次提交对象 .
  3. Modified 已修改 : 对工作区已提交文件进行更改后的文件 , 更改尚未保存到本地仓库 .
  4. Staged 已暂存 : 对工作区已修改文件或未追踪文件进行标记后的文件 , 文件被添加到暂存区 .

分支

分支是指向提交版本的可变指针 , 提交版本操作时 , 当前分支的指针会跟随指向新的提交版本 .

  1. 增加分支 :
    1. 仅创建 : git branch <分支名>
    2. 创建并切换 : git checkout -b <分支名>
  2. 切换分支 : git checkout <分支名>
  3. 合并分支 : git merge <分支名> 合并指定分支到当前分支 .
    如果两个分支对同一文件的同一部分进行了不同修改 , 即会发生合并冲突 , 此时需要手动处理冲突文件 . 可以通过 git status 查看冲突文件 , 编辑完成后重新将文件放入暂存区后提交完成合并 .
  4. 查看分支 : git branch
  5. 删除分支 :
    1. 检查删除 : git branch -d <待删除的分支名>
    2. 强制删除 : git branch -D <待删除的分支名>

控制台命令

本地仓库 - 暂存区 - 工作区

  1. 在当前项目目录初始化 git 仓库 : git init
  2. 将已修改文件提交到暂存区 :
    1. 单文件 : git add <文件路径或文件名>
    2. 多文件 : git add <文件路径或文件名1> <文件路径或文件名2> ...
    3. 特征文件 : git add *.txt 将当前目录所有以 .txt 结尾的文件添加到暂存区 .
    4. 全部文件 : git add *
  3. 将已暂存文件提交到本地仓库 :
    1. 单行备注 : git commit -m "备注"
    2. 多行备注 : git commit 进入文本编辑器进行备注编辑
      如果文本编辑器是 Vim , Esc + :wp 用于保存备注并返回至 Git Bash
    3. 直接提交 : git commit -a -m "备注" 跳过缓冲区将所有非未追踪文件的修改提交到本地仓库 .
    4. 追加提交 : git commit --amend -m "新备注" 将更改直接追加到上一次提交并更新备注 ( 谨慎使用 ) .
  4. 查看提交历史记录 : git log
  5. 将历史提交恢复到工作区 : git checkout <提交哈希值> -- <期望恢复的文件>
    分支指向提交版本 , 切换分支时也使用 git checkout <分支名> 命令 , 同时工作区的文件会更新至新分支指向的提交版本 . 切换到新分支时 , 新分支需要存在 , 可以使用 git checkout -b <新分支> 创建新分支并切换至改分支 , 创建新分支时新分支会指向当前分支所指向的提交版本 .
    全局恢复 : git checkout <提交哈希值>

远程仓库 - 本地仓库 - 工作区

  1. 关联远程仓库 : 如果本地仓库不是通过克隆创建的 : git remote add <远程仓库名(通常为origin)> <远程仓库地址>
    1. 如何使用克隆创建本地仓库 ? git clone <远程仓库地址>
    2. 如果本地仓库是使用克隆创建的 ? 在克隆过程中 , 本地仓库会自动与远程仓库进行关联 , 不需要重新关联远程仓库 .
    3. 远程仓库的地址类型有 ? HTTPSSSH .
    4. 一个本地仓库可以关联多个远程仓库 .
  2. 查看远程仓库信息 : git remote -v 查看远程仓库的名称和对应的 URL .
  3. 拉取远程仓库的版本 : git pull <远程仓库名> <远程分支名>
    拉取版本相当于合并分支 , 同样具有合并冲突 , 手动解决冲突后暂存+提交来完成合并 .
  4. 推送本地提交到远程仓库 : git push <远程仓库名> <本地分支名>:<远程分支名>
    若本地分支名和远程分支名相同可简化为 git push <远程仓库名> <共同分支名> .
    首次推送本地分支到远程仓库的同名分支时 , 可使用 git push -u <远程仓库名> <共同分支名> 关联本地和远程 , 后续推送仅使用 git push 即可 .
  5. 查看远程提交记录 : git log <远程仓库名>/<远程分支名>

协作开发

  1. 拉取克隆仓库 git clone
    拉取该分支所指向的版本 , 远程仓库关于该分支的提交历史 , 与该分支相关的其他分支 . 在提交时 git 首先会检查远程仓库和本地仓库关于当前分支 ( 不一定是拉取分支 ) 的提交历史是否一致 , 不一致则拒绝提交 .
  2. 2.1 创建任务分支 git checkout -b <你负责的分支>
    2.2 查看提交差异 git diff
  3. 如果远程有更新 :
    3.1 切换回有更新的分支 git checkout <分支名>
    3.2 拉取远端更新 git pull origin <分支名>
    3.3 切换回任务分支 git checkout <你负责的分支>
  4. 远程同步三步法的简化 :
    4.1 当前处于任务分支 .
    4.2 使用变基命令 git rebase <分支名> 将更新的分支直接同步到本地仓库
    可能出现合并冲突 ! 需要手动处理冲突部分 .
  5. 远程提交冲突 :
    两人负责同一分支 , 一人先提交到远程仓库 , 另一个人再提交可能会发生提交被拒绝的情况 , 提交时 git 会检查远程分支是否存在新的提交 , 如果本地的提交历史和远程分支不一致 , 提交会被拒绝 . 另一个人需要将远程分支的更新拉取到本地 , 解决合并冲突后再推送到远程分支 .

相关文章:

  • 解决go项目构建后不能夸Linux平台的问题
  • 使用IntersectionObserver实现目标元素可见度的交互
  • Franka机器人ROS 2来袭:解锁机器人多元应用新可能
  • [密码学基础]商用密码应用安全性评估(密评):网络安全新风口,高薪紧缺人才必备技能
  • 本地搭建一个简易版本的 Web3 服务
  • 2025年世界职业院校技能大赛实施方案(意见稿)
  • 讯联桌面TV版apk下载-讯联桌面安卓电视版免费下载安装教程
  • 【25软考网工笔记】第三章 局域网(1)CSMA/CD、二进制指数退避算法、最小帧长计算
  • C语言学习记录(16)文件操作7
  • VScode-py环境
  • 用全新发布的ChatGPT-o3搜文献写综述、专业审稿、降重润色,四个步骤轻松搞定全部论文难题!
  • element-plus中,Steps 步骤条组件的使用
  • 从“堆料竞赛”到“体验深耕”,X200 Ultra和X200s打响手机价值升维战
  • 第 7 篇:总结与展望 - 时间序列学习的下一步
  • ubuntu--汉字、中文输入
  • 1-1 什么是数据结构
  • Python 金融量化分析
  • pytest基础-new
  • 泰迪智能科技大模型应用平台功能特色优势
  • 代码随想录第21天: 回溯算法3
  • 中国旅游日主题月期间,东航将准备超51.9万套特惠机票
  • 首届中国—海湾阿拉伯国家合作委员会和平利用核技术论坛在成都召开
  • 世界读书日|南京图书馆开了首个网络文学主题阅读空间
  • 云南昭通一公园发现毒饵,多只宠物狗疑中毒致死
  • 青创上海—2025浦东徒步行活动举行,“青年草坪创新创业湃对”正式亮相
  • 贵阳市消防救援支队原支队长李世永受审,为谋提拔给中管干部送25万