Git的使用

git:分布式版本控制,最流行的版本控制工具。

文前了解: 仓库是用来存储代码的地方,也可以称之为版本库。仓库包括两种类型:本地仓库和远程仓库。本地仓库指的是在本地计算机上存储的仓库,可以使用git init命令创建,也可以通过克隆远程仓库得到。远程仓库指的是存储在远程服务器上的仓库,可以使用git clone命令从远程服务器上克隆得到。

1.1 git的安装

具体安装可以看这位博主的文章

1.2Git的工作流程

一般工作流程

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

在这里插入图片描述

1.3Git的基础原理

git的原理-git的四个区域
在这里插入图片描述

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
  • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
  • 当执行 git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。

1.4 git构建仓库

1.4.1 创建裸仓库

命令:git init --bare
初始化裸仓库,用于做为git服务端共享仓库。
在这里插入图片描述
什么是裸仓库?

  • 裸仓库可以理解为理解为轻量级的仓库,只包含.git文件夹的仓库。(就算黑客攻击了服务器也无法从中拿到代码)
  • git分为三个工作区:工作区、暂存区域、Git 仓库,裸仓库实质上就是没有工作目录的Git仓库。它只包含Git版本库中的对象,没有其他的文件或目录。它提供了一种轻量级的方式来共享代码库,因为它占用的空间更小,传输速度更快。

裸仓库的clone命令

  • 命令:git clone --bare xxx.git

*裸仓库的限制
在裸仓库中,只能进行push和fetch操作,不能进行直接的commit或merge操作。这是因为裸仓库没有工作目录,无法进行文件编辑和合并。通常情况下,裸仓库是用来实现 Git服务器的。开发者可以使用它来共享代码库,管理代码版本,保持团队协作等。

1.4.2 创建普通仓库

命令:git init
普通仓库里面是有代码的,我们可以看见

普通仓库的clone命令

  • 命令:git clone xxx.git
  • 如果想要clone别人电脑上的代码也可以通过ssh连接对方电脑并输入用户名密码进行clone,如果不想输入密码则可以通过生成ssh的公钥和私钥 ,将公钥拷贝到对方机器中。
  • 生成密钥的命令:ssh-keygen -t 加密算法

1.4.3 Git配置

  • git 的设置使用 git config 命令。
  • 编辑 git 配置文件:git config -e # 针对当前仓库
  • git config -e --global # 针对系统上所有仓库

1.5Git的基本命令

  • 提交与修改
    命令 说明
    git add : 添加文件到暂存区
    git restore: 将暂存区的文件取下来
    git status : 查看仓库当前的状态,显示有变更的文件。
    git diff : 比较文件的不同,即暂存区和工作区的差异。
    git commit: 提交暂存区到本地仓库。
    git reset: 回退版本。
    git reset --mixed head~1: 退回到工作区
    git reset --soft head~1 退回到暂存区
    git reset --hard head~1 直接抹掉上一次的提交
    git rebase --continue 合并冲突,结合"git add 文件"命令一起用与修复冲突,提示开发者,一步一步地有没有解决冲突。
    git rebase --abort 会放弃合并,回到rebase操作之前的状态,之前的提交的不会丢弃
    git rebase --skip 将引起冲突的commits丢弃掉(慎用!!)
    git rm: 将文件从暂存区和工作区中删除。
    git mv: 移动或重命名工作区文件。
    git checkout: 分支切换。
    git switch: 更清晰地切换分支。
    git restore : 恢复或撤销文件的更改。

  • 提交日志
    命令 说明
    git log: 查看历史提交记录
    git blame : 以列表形式查看指定文件的历史修改记录

  • 远程操作
    命令 说明
    git remote: 远程仓库操作
    git fetch: 从远程获取代码库
    git pull: 下载远程代码并合并
    git push: 上传远程代码并合并

  • 整理操作
    命令 说明
    git rebase -i 整理很久以前的提交
    git commit --amend 整理上一次的提交

1.6 Git分支管理

几乎每一种版本控制系统都以某种形式支持分支,一个分支代表一条独立的开发线,使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作,Git 分支实际上是指向更改快照的指针。

  • git branch (branchname) 创建分支命令

  • git checkout (branchname) 切换分支命令

  • git merge 合并分支命令

  • git branch 列出分支命令,没有参数时,git branch 会列出你在本地的分支。

  • git branch -d (branchname) 删除分支命令

  • git branch --merged 显示所有已合并到当前分支的分支

  • git branch --no-merged 显示所有未合并到当前分支的分支

  • git branch -m master master_copy 本地分支改名

  • git checkout -b master_copy 从当前分支创建新分支master_copy并检出

  • git checkout features/performance 检出已存在的features/performance分支

  • git checkout --track hotfixes/BJVEP933 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支

  • git checkout v2.0 检出版本v2.0

  • git checkout -b devel origin/develop 从远程分支develop创建新本地分支devel并检出

  • git checkout – README 检出head版本的README文件(可用于修改错误回退)

  • git merge origin/master 合并远程master分支至当前分支

  • git cherry-pick ff44785404a8e 合并提交ff44785404a8e的修改

  • git push origin master 将当前分支push到远程master分支

  • git push origin :hotfixes/BJVEP933 删除远程仓库的hotfixes/BJVEP933分支

1.7Git查看提交历史

Git 提交历史一般常用两个命令:

  • git log - 查看历史提交记录。
  • git blame - 以列表形式查看指定文件的历史修改记录。

git log 显示了从最新提交到最早提交的所有提交信息,包括提交的哈希值、作者、提交日期和提交消息等。

  • git log 命令的基本语法:git log [选项] [分支名/提交哈希]

常用的选项包括:

  • p:显示提交的补丁(具体更改内容)。
  • oneline:以简洁的一行格式显示提交信息。
  • graph:以图形化方式显示分支和合并历史。
  • decorate:显示分支和标签指向的提交。
  • author=<作者>:只显示特定作者的提交。
  • since=<时间>:只显示指定时间之后的提交。
  • until=<时间>:只显示指定时间之前的提交。
  • grep=<模式>:只显示包含指定模式的提交消息。
  • no-merges:不显示合并提交。
  • stat:显示简略统计信息,包括修改的文件和行数。
  • abbrev-commit:使用短提交哈希值。
  • pretty=<格式>:使用自定义的提交信息显示格式。

1.8添加远程仓库(Github)

可以看看这个
GitHub

1.9Git可视化工具

Git 可视化工具可以帮助开发者更直观地查看和管理代码版本控制历史,以下是几个常用的 Git 可视化工具:

  • GitKraken:提供了强大的图形界面,包括代码历史记录、分支管理、合并冲突解决等功能。
  • Sourcetree:提供了友好的用户界面,可以轻松地进行代码提交、分支管理和冲突解决等操作。
  • GitHub Desktop:提供了清晰明了的界面,可视化显示代码历史记录、分支管理、拉取请求(pull request)等功能,以及与 GitHub 网站的集成支持。
  • Git GUI:对于习惯命令行操作的开发者来说,Git GUI 可以提供便捷的图形化界面。
  • 45
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值