版本控制Git

版本控制Git使用

Git是一款分布式版本控制系统,由Linux内核缔造者林纳斯・托瓦兹于2005年开发。其主要用途是对软件开发过程中的代码版本进行管理,不过它也能对其他类型的文件版本加以管理。

介绍

核心特性

  • 分布式
    • 在Git中,每个开发者的本地仓库都完整包含了代码库及其版本历史。
    • 开发者可以在离线状态下开展工作,并且在本地进行提交、分支创建与合并等操作。
  • 高效性
    • Git针对性能进行了优化,能够快速处理大型项目和大量的提交历史。
  • 数据完整性
    • Git采用SHA-1哈希算法来确保数据的完整性。
    • 每一次提交、文件内容等都会生成一个唯一的哈希值,一旦数据发生改变,哈希值也会相应改变。
  • 分支与合并
    • Git支持轻松创建和管理分支,这使得开发者可以并行开发不同的功能或修复不同的问题。之后,这些分支可以方便地合并到主分支。

应用场景

  • 软件开发
    • Git的主要应用场景,团队成员可以协同开发,管理代码的不同版本和分支。
  • 文档管理
    • 对于多人协作编写的文档,如技术文档、书籍等,Git可以有效管理版本和修改记录。
  • 开源项目
    • 众多开源项目都使用Git进行版本控制,方便全球的开发者共同参与项目开发。

相关工具与平台

  • Git客户端
    • Git Bash(Windows),为用户提供了命令行或图形化的操作界面。
  • 远程仓库托管平台
    • GitHub、GitLab、Gitee等,它们提供了代码托管、协作开发、问题跟踪等功能

使用

git下载

常用操作命令

  • 仓库初始化
    • git init 在本地目录创建一个新的Git仓库
  • 克隆仓库
    • git clone url 从远程仓库复制一份代码到本地
    • git clone -b url 从远程仓库指定分支复制一份代码到本地
  • 添加文件
    • git add filePath 将指定文件添加至暂存区
    • git add . 添加当前项目下所有修改文件至暂存区
  • 提交更改
    • git commit -m "提交信息" 用于将暂存区的文件提交到本地仓库
    • git commit --amend 用于追加提交
  • 查看状态
    • git status 查看当前项目和暂存区的状态
  • 查看提交历史
    • git log 查看提交历史记录,便于回退代码
  • 分支操作
    • git branch 查看本地分支
    • git branch branchName 创建新分支
    • git checkout branchName 切换到指定分支
    • git merge branchName 将指定分支合并到当前分支
  • 与远程仓库交互
    • git push origin master 把本地仓库的提交推送到远程仓库
    • git push origin HEAD:refs/for/master 把本地仓库的提交推送到远程仓库
    • git pull 从远程仓库拉取最新代码并合并到本地

高级用法

  • git新建分支代码提交

    • 1.新建分支:xxx_20250410
    • 2.克隆代码:git clone -b xxx_20250410 git地址
    • 3.提交代码:git add .git commit -m "msg"
    • 4.push代码:git push origin xxx_20250210:refs/for/xxx_20250210git push origin HEAD::refs/for/xxx_20250210
  • git提交代码时,git前有一笔网页修改代码,pull后提交新代码,审核后submit无法合入,解决方案

    • 1.git log:查看本地提交记录(commitId)
    • 2.git reset 40e2abe6d409c68a...:回退至本次提交前代码状态,可用git status查看此时状态
    • 3.git stash:暂存本地修改
    • 4.git rebase origin/master:更新本地代码至代码仓master最新代码
    • 5.git stash pop:取出缓存中暂存的修改文件,有冲突解决冲突
    • 6.执行git命令重新提交代码
  • git commit相关问题

    • 回退git commit后代码,使用git reset --soft HEAD^
    • 若使用git commit --amend -m "xxx",回退后需git pull下,恢复下上次提交
  • git commit -m "#2xxx" 报错:file is empty: .git/COMMIT_EDITMSG

    • 原因:commit信息不能#号开头
  • git commit --amend使用

    • 已提交至git仓代码经审核存在问题需要修复时,避免回退代码使用该指令追加提交
    • 已提交至git仓代码有扫描问题时,追加修复扫描问题
    • git log查看提交记录时,若使用git commit + git commit --amend,只会看到最后一次的--amend记录,会覆盖前一条commit提交记录
      • 若想查看可使用git reflog查看
      • 回退可使用git reset --hard commitId
相关推荐
流浪汉kylin2 分钟前
Android 斜切图片
android
PuddingSama39 分钟前
Android 视图转换工具 Matrix
android·前端·面试
RichardLai881 小时前
[Flutter学习之Dart基础] - 控制语句
android·flutter
archko1 小时前
compose map 源码解析
android
大熊的瓜地1 小时前
从零开始写android 的智能指针
android
甜辣小悦羊2 小时前
Android Studio 的安装教程
android·ide·android studio
louisgeek2 小时前
Android Intent
android
树獭非懒2 小时前
Android重学笔记|别再滥用广播了
android·客户端
V少年3 小时前
深入浅出安卓K线指标优化实践
android
Tiger_Hu3 小时前
通过WebRTC源码入门OpenGL ES
android·webrtc·opengl