IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git基础与实操 -> 正文阅读

[开发工具]Git基础与实操

1 版本控制工具简介

  • 介绍版本控制的意义
  • 相关工具的发展历史。

1.1 版本控制意义

  • 清晰明了的表示各种文件或者项目的版本更新内容
  • 能够在发生意外时通过版本控制进行恢复,恢复到以前的某个文件/项目版本
  • 协同工作,提升工作效率

1.2 版本控制的发展历程

  • 起源:diff和patch两种操作,diff记录当前文件/项目与原始文件/项目的区别,patch反向操作,恢复原始文件/项目
  • RCS:通过将diff和patch的获取的文件保存到本地磁盘,存在一定的限制
  • CVS/SVN:集中式版本控制工具,设置服务端保存文件/项目版本,可以进行协同合作,但是设置单点服务器存在数据安全等问题
  • Git:分布式版本控制工具,以快照的方式记录所有版本的数据,并且以分布式形式进行交互,提高协同工作的效率与安全性

1.3 小结

  • 版本控制工具的发展历史经过:原始人工维护状态,本地RCS,集中式如VCS、SVN和分布式如Git。
  • 版本控制工具提供了协作开发的能力,借助它们我们可以回到任何时间的代码状态。
  • 集中式版本控制工具,几乎所有的动作都需要服务器参与,并且数据安全性与服务器关系很大。
  • Git 是分布式版本控制工具,除了与服务器之前进行按需同步之外,所有的提交操作都不需要服务器

2 Git安装与配置

  • Windows与Linux下安装Git
  • 配置Git

2.1 Windows安装Git

2.2 Linux安装Git

  • 安装包:下载安装包
  • 包管理器方式安装
    • Ubuntu 或者 Debian 系统
      sudo aptitude install git
      sudo aptitude install git-doc git-svn git-email gitk
    • RHEL、Fedora或者CentOS系统
      yum install git
      yum install git-svn git-email gitk
  • 源代码安装
    • 安装源码包git-2.19.0.tar.gz
      tar -jxvf git-2.19.0.tar.bz2
      cd git-2.19.0
    • 参照INSTALL文件进行安装,设置安装目录
      make prefix = /user/local all
      sudu make prefix = /user/local install
    • 安装Git文档*
      make prefix=/user/local doc info
      sudo make prefix=/user/local install-doc install-html install-info

2.3 配置Git

  • 命令自动补全
    • 将Git源码包中的命令补齐脚本复制到bash-completion对应的目录中
      cp contrib/completion/git-completion.bash /etc/bash_completion.d/
    • 重新加载自动补齐脚本,使之在当前shell中生效
      . /etc/bash_completion
    • 为了能够在终端开启时自动加载bash_completion脚本,需要在本地配置文件~/.bash_profile或全局文件/etc/bashrc文件中添加下面的内容
      if [ -f /etc/bash_completion ]; then
      . /etc/bash_completion
      fi
  • 配置个人身份
    • git config --global user.name "zhangsan"
    • git config --global user.email zs123@163.com
  • 文本换行符配置(windows行尾标识crlf,Linux行尾标识lf)
    • Windows下设置自动转换 git config --global core.autocrlf true
    • Linux签入时转换 git config --global core.autocrlf input
    • Windows上开发,不需转换 git config --global core.autocrlf false
  • 文本编码配置
    • 文本设置成支持中文 git config --global gui.encoding utf-8
    • 存储log时采用中文 git config --global i18n.commitencoding utf-8
    • 查看log时中文显示 git config --global i18n.logoutputencoding utf-8
    • 支持中文路径 git config --global core.quotepath false
  • 与服务器的认证配置
    • http/https协议认证
      • 设置口令缓存 git config --global credential.helper store
      • 添加HTTPS证书信任 git config http.sslverify false
    • ssh认证配置
      • 生成公钥与秘钥 ssh-keygen -t rsa -C zs123@163.com
      • 找到对应的公钥添加即可
  • 附录:
    • 系统配置 git config --system core.autocrlf
    • 用户配置 git confug --global user.name
    • 仓库配置 git config --local remote.origin.url

2.4 小结

  • Linux 下安装 Git 可以通过系统的包管理器安装,也可以通过下载源码编译安装。
  • .Windows 下使用 Git 有两种不同的方案:Git 原生安装包与图形化界面工具 TortoiseGit。
  • 通过 Git的配置命令,我们可以对个人身份、文本换行符、编码显示等进行配置。

3 Git基本命令

3.1 基本命令前置概念及总览

  • Git版本控制下的三种工程区域
    • 版本库(Repository)
      在工作区中有一个隐藏目录git,这个文件夹就是Git的版本库,里面存 放了Git用来管理该工程的所有版本数据,也可以叫本地仓库。
    • 工作区(Working Directory)
      日常工作的代码文件或者文档所在的文件夹。
    • 暂存区(stage)
      一般存放在工程根目录.git/index文件中,所以我们也可以把暂存区叫作索引(index)。
  • Git版本控制下的文件状态
    • 已提交(committed)
      该文件已经被安全地保存在本地数据库中了;
    • 已修改(modified)
      修改了某个文件,但还没有提交保存;
    • 已暂存(staged)
      把已修改的文件放在下次提交时要保存的清单中。

3.2 常用命令

  • 工程准备
    • 克隆远端工程到本地磁盘 git clone [URL]或者git lfs clone [URL]
    • 新建git项目仓库 git init firstObject
  • 新增、删除、移动文件到暂存区
    • 把文件添加到暂存区 git add 文件名/.(所有文件)
    • 将指定文件从当前节点的暂存区删除 git rm 文件名
    • 移动文件和重命名文件 git mv 源文件 目标位置或者目标文件名
  • 查看工作区
    • 显示工作目录和暂存区的情况 git status
    • 比较项目中任意两个版本(分支)之间的差异或者当前索引与上次提交的差异
      • 两个节点的差异 git diff 节点1 节点2
      • 两个分支的差异 git diff 分支1 分支2
      • 当前索引和上次提交的差异 git diff --cached
      • 仅仅查看比较的差异文件 在Git diff 后面添加 --name-status
  • 提交更改的文件
    • 将暂存区文件提交到本地版本库 git commit 文件名 -m 提交相关信息
    • 将所有暂存区文件提交到本地版本库 git commit -am 相关修改信息
    • 修改相关描述信息 git commit --amend
  • 查看日志 git log [-num] [--name-status]
  • 推送远端仓库
    • 将本地版本库中的分支推送到远端服务器上对应的分支 git push origin(通常远端服务器的名字) 分支名字
    • 本地分支名与远端分支名不同 git push origin 远端分支名:本地分支名
  • 分支管理
    • 查看本地工程的所有分支 git branch
    • 查看远端工程的所有分支 git branch -r
    • 查看本地和远端工程的所有分支 git branch -a
    • 新建分支 git branch 新分支名或者git checkout -b 新分支名(自动切换到新建分支)
    • 删除本地分支 git branch -d或者git branch -D(强制删除)
    • 删除远端分支 git branch -r -d 对应远端的本地分支名删除后需要重新推送git push origin:本地分支名
    • 切换分支 git checkout -f(强制切换) 分支名
    • 从远端获取更新的分支并与本地分支合并 git pull origin 远端分支名:本地分支名如果远端与本地分支名称相同,只需一个名称即可
    • 获取远端仓库的某个更新的分支到本地仓库 git fetch origin 远端分支名:本地分支名
  • 分支合并
    • 从指定分支合并到当前分支 git merge 分支名
    • 另一种合并方式 git rebase 分支名
  • 撤销操作
    • 撤销当前工作区的某些add/commit操作 git reset 提交ID
    • 回退本地所有修改而未提交的文件 git checkout .
    • 回退本地指定文件 git checkout -文件名
    • 回退到历史某个版本 git checkout 提交ID

3.3 小结

  • 在最简单的开发场景下正确理解Git基本命令
  • 利用Git命令交互提示自主解决问题
  • 理解不同的Git命令对远端服务器仓库和本地仓库的影响

4 分支合并过程中的冲突处理

4.1 冲突

  • 两个分支的提交版本对同一文件具有不同的修改
  • 分支合并过程中不知道以哪个提交版本为基础

4.2 解决

  • 查看conflict提示,修改对应冲突文件内容
  • 将修改后的文件重新add和commit
  • 自动完成分支合并

4.3 比较两次提交版本的差异

  • git diff commit_id1 commit_id2
  • commit_id可以只输入前几位,而不需要全部复制粘贴

5 撤销操作

  • 回复到上次提交 git reset --hard commit_id
  • 在add之前的修改进行恢复 git checkout filename
  • 查看之前所有的命令 git reflog
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-07 22:55:14  更:2022-04-07 22:56:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:22:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码