git 使用及详解

1、简介

        git 是一个开源的分布式版本控制系统,其操作主要流程如下:

git 使用及详解_第1张图片

2、git 下载安装配置
2.1、下载
# 1、下载(https://git-scm.com/)
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
# 2、安装
./configure --prefix=/usr/local/git
make && make install
git --version # 查看 git 版本
 2.2、配置
# 1、配置(去掉 --global 参数只对当前仓库有效)
git config --global user.name "weilong"
git config --global user.email "[email protected]"
# 2、配置公钥(生成公钥,并且将生成的公钥粘贴到远程仓库中。例如:github中 (settings->Deploy keys->Add deploy key->key内即可))
ssh-keygen -t rsa -C "[email protected]"
cat /root/.ssh/id_rsa.pub
# 3、验证是否秘钥配置成功
ssh -T [email protected]
3、git 仓库常用仓库
  • 工作区:就是在电脑里能看到的目录。

  • 暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。

  • 版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

3.1、查看已有配置 
# 查看已有的配置信息
git config --list       # 这些配置也可以在 ~/.gitconfig 或 /etc/gitconfig 查看
git config user.name    # 获取某个环境变量的值
git config -e           # 编辑 git 配置文件(针对当前仓库)
git config -e --global  # 编辑 git 配置文件(全局)
 3.2、git 仓库初始化
git init                # 该命令执行完后会在当前目录生成一个 .git 目录
3.3、将更改添加到本地暂存区中
# 将更改添加到本地暂存区中
git add ./--all                   # 将 所有 添加到暂存区
git add [file1] [file2] ...       # 将 一个或多个文件 添加到暂存区
git add [dir]                     # 添加指定目录到暂存区,包括子目录
3.4、将提交到暂存区的更改提交到本地仓库
# 将提交到暂存区的更改提交到本地仓库
git commit -m '初始化项目版本'
3.5、克隆
# 克隆(可以指定克隆到的目录,也可以不指定,直接克隆到当前路径下)
git clone    # repo:Git 仓库;directory:本地目录。
git clone    # 从一个目录克隆到另一个目录。
3.6、查看仓库当前状态,显示有变更的文件
# 查看仓库当前状态,显示有变更的文件
git status -s         # 通常使用 -s 参数来获得简短的输出结果
3.7、比较两个文件的不同,暂存区和工作区的差异
# 比较两个文件的不同,暂存区和工作区的差异
git diff [file]       # 显示文件在暂存区和工作区的差异
git diff --cached [file]/git diff --staged [file] # 显示暂存区和上一次提交(commit)的差异
git diff [first-branch]...[second-branch]         # 显示两次提交之间的差异
git diff HEAD         # 查看已缓存的与未缓存的所有改动
git diff -stat        # 显示摘要而非整个 diff
3.8、将暂存区提交到本地仓库
# 将暂存区提交到本地仓库
git commit -a -m "message" # -a: 修改文件后不需要执行 git add 命令,直接来提交;-m:添加提交信息
git commit [file1] [file2] ... -m [message]  # 提交暂存区的指定文件到本地仓库区
3.9、回退版本
# 回退版本
git reset [--soft|--mixed|--hard] [HEAD]  # --mixed为默认,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。
#### 例子:####
# git reset HEAD^ #回退所有内容到上一个版本,HEAD表示当前版本,HEAD^上一个版本,HEAD^^上上一个版本。以此类推...
# git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一个版本  
# git reset 052e            # 回退到指定版本
# git reset --soft HEAD~3   # 回退上上上一个版本,HEAD~0表示当前版本,HEAD~1上一个版本。以此类推...
git reset --soft HEAD       # --soft 参数用于回退到某个版本
git reset --hard HEAD       # --hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交
# git reset --hard origin/master    # 将本地的状态回退到和远程的一样
3.10、将文件从暂存区和工作区中删除
# 将文件从暂存区和工作区中删除
git rm    # 将文件从暂存区和工作区中删除,删除之前修改过且已经放到暂存区的话,必须用强制删除选项 -f
git rm --cached  # 如果想把文件从暂存区域移除,但希望保留在当前工作目录中,使用--cached即可。
3.11、移动或重命名工作区文件
# 移动或重命名工作区文件
git mv -f [file] [newfile] # 如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数
3.12、查看提交历史
# 查看提交历史
git log   # 查看历史提交记录
git blame   # 以列表形式查看指定文件的历史修改记录
git log --oneline # --oneline选项来查看历史记录的简洁的版本,反向展示:git log --reverse --oneline
git log --graph   # 查看历史中什么时候出现了分支、合并
git log --author  # 查找指定用户的提交日志
git log --oneline --before={3.weeks.ago} --after={2023-04-18} --no-merges
# 指定日期,可以执行几个选项:--since 和 --before,也可以用 --until 和 --after,--no-merges 选项以隐藏合并提交
3.13、远程仓库操作
# 远程仓库操作
git remote -v                        # 显示所有远程仓库
git remote show [remote]             # 显示某个远程仓库的信息
git remote rm name                   # 删除远程仓库
git remote rename old_name new_name  # 修改仓库名
# 将本地仓库和远程仓库进行关联和远程分支
git remote add origin [email protected]:weilong/test.git # weilong/test.git已在远程创建,origin是自定义远程仓库主机名
git push -u origin master  # 给远程主机名为origin的仓库创建一个新的分支master
3.14、创建本地、远程分支,并删除
# 创建本地、远程分支,并删除
git checkout -b newBranch           # 新创建并切换到newBranch(本地分支)
git checkout -b newBranch origin/develop  # 基于远程origin/develop 分支新创建并切换到newBranch(本地分支) 
git branch -d/-D newBranch          # 删除/强制删除本地分支newBranch
git push -u origin newBranch        # 新创建远程分支
git push --delete origin newBranch  # 删除远程分支 
3.15、推送、拉取
# 推送、拉取
git pull origin master:brantest # 将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull 版本库 分支名 # 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git push 版本库 分支名
3.16、拉取远程分支变更
# 拉取远程分支变更
git fetch [origin]
git fetch origin 远程分支名:本地自定义分支名   # 如果本地分支不存在就新建,否则更新(基于远程分支创建本地分支)
4、git 分支操作
4.1、查看本地分支和远程分支列表
# 查看本地分支和远程分支列表
git branch      # 查看本地分支
git branch -r   # 查看远程分支列表
4.2、创建本地分支
# 创建本地分支
git branch newBranch  和 git checkout newBranch   # 创建并且切换分支,这两条命令等价与 git checkout -b newBranch
git branch newBranch oldBranch # 从现有分支创建新分支
4.3、恢复删除的分支
# 恢复删除的分支
删除分支 git 只是删除指向相关提交的指针,知道删除分支时提交对象的指针就可以恢复分支
git reflog # 查看相关提交的散列值
git branch branch_name HEAD@{1} # 从 HEAD@{1} 提交中恢复分支
4.4、分支合并
# 分支合并
git merge branch2  # 假设当前所在分支为 branch1,将 branch2 分支合并到 branch1 中
git reset --merge
git merge --no-ff branch2  # 快进合并,使得当前落后分支到达最新分支branch2的状态后,完成合并
5、版本标签

         创建标签是针对特定提交或者分支当前版本。

5.1、git 标签操作常用命令
# 显示所有标签
git tag -l [1.2.*]  # 可以使用模式匹配
# 创建轻量标签
git tag 标签名
git tag 标签名 提交版本
git tag 1.2.3 master -m "self define info"  # 在master分支上的当前版本创建一个名为1.2.3的标签
# 创建附注标签
git tag -a 标签名称 -m 附注信息
git tag -a 标签名称 提交版本号 -m 附注信息   # 给特定的提交版本号创建标签
# 删除标签
git tag -d v1.0
# 查看某个版本的修改内容
git show v1.0
5.2、远程标签常用命令
# 1、创建远程标签
# 默认情况下,git push 命令并不会把标签推送到远程仓库中,因此,我们必须手动地将本地的标签推送到远程仓库中
git push origin 标签名称 # 将指定的标签上传到远程仓库(单个标签)
git push origin --tags  # 将所有不在远程仓库中的标签上传到远程仓库(所有标签)
# 2、删除远程标签(两种方式)
git push origin :/ref/tags/标签名
git push origin --delete 标签名
6、总结

        本文详细介绍了 git 的安装配置,仓库、分支、标签的详细操作。掌握这些命令,足以完成 git 操作代码库。

        本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取自学总结资料(pdf版本)或者希望共同学习,关注微信公众号:上了年纪的小男孩。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)

git 使用及详解_第2张图片

你可能感兴趣的:(git)