1、简介
git 是一个开源的分布式版本控制系统,其操作主要流程如下:
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 "zwlong1114@163.com"
# 2、配置公钥(生成公钥,并且将生成的公钥粘贴到远程仓库中。例如:github中 (settings->Deploy keys->Add deploy key->key内即可))
ssh-keygen -t rsa -C "zwlong1114@163.com"
cat /root/.ssh/id_rsa.pub
# 3、验证是否秘钥配置成功
ssh -T git@github.com
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> <directory> # repo:Git 仓库;directory:本地目录。
git clone <directory> <directory> # 从一个目录克隆到另一个目录。
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 <file> # 将文件从暂存区和工作区中删除,删除之前修改过且已经放到暂存区的话,必须用强制删除选项 -f
git rm --cached <file> # 如果想把文件从暂存区域移除,但希望保留在当前工作目录中,使用--cached即可。
3.11、移动或重命名工作区文件
# 移动或重命名工作区文件
git mv -f [file] [newfile] # 如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数
3.12、查看提交历史
# 查看提交历史
git log # 查看历史提交记录
git blame <file> # 以列表形式查看指定文件的历史修改记录
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 git@github.com: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版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)