当前位置: 首页 > news >正文

Git常见使用

基本操作

创建仓库

1.先创建一个文件,再进入到对应的文件夹中

# 创建文件 
mkdir [file_name] # 进入该文件
cd [file_name]  

2.创建对应的Git仓库(在对应的文件夹内)

# 创建对应的仓库
git init # 可以查看当前文件内的内容
ll file_name # 查看tree目录
tree .git/ 

配置本地仓库

必须要配置的配置项:

  1. name

  2. email

为了方便操作,推荐在初始化仓库之后就进行配置

# 配置
git config user.name "test"
git config user.email "12345@qq.com"# 查看当前仓库的所有配置项
git config -l# 重置配置
git config --unset user.name
git config --unset user.email

对于一台服务器来说,可以不只有一个仓库,加入 --global 可以让配置项对该服务器中的所有仓库进行配置

# 全局配置
git config --global user.name "test"
git config --global user.email "12345@qq.com"

需要注意的是: 使用 --global 来进行配置,不能使用普通重置

# 全局重置
git config --global --unset user.name
git config --global --unset user.email

维护/管理

管理的前提条件是将文件放入Git仓库,创建一个ReadMe来进行管理

# 在当前git仓库下
touch ReadMe # 这里会创建到工作区中

但是这样创建之后Git是无法管理ReadMe文件的,因为ReadMe存在的目录不是对应的本地仓库文件

.git/ 才是仓库,或者叫版本库

需要注意的是,不能将ReadMe文件放入 .git/ ,这个文件是不允许手动进行修改的,修改后可能会导致整个仓库报废

工作区 add 之后 加入版本库的暂存区,commit之后会上传到当前分支(树状结构,存储的都是对象的索引)

操作版本

需要提前注意的是,仓库对于文件的修改定义有多种:

  1. 新增

  2. 内容/文件名修改

  3. 删除

修改文件

# 上传文件到暂存区
git add [file_nmae]# 将当前仓库的所有被修改了的文件加入暂存区
git add .# 添加被忽略的文件,强制添加
git add -f [file_name]# 提交到对应分支,这里是直接将暂存区的全部文件都进行上传
git commit -m "当前提交的版本描述" 

添加文件之后,我们可以看到 .git/ 文件也有一些变化: 生成了暂存区 index 

# 查看结构
tree .git/

如果对文件进行了删除,那么也需要对删除的文件进行add之后再commit

同时也可以直接使用git的删除提交指令

# 这个语句是会在暂存区进行删除,所以还是要进行commit操作
git rm [file_name]# 提交到版本库
git commit -m "操作/版本描述"

版本回退

Git是我们用来管理版本的工具,那么我们要获取到当前文件的上一个版本,就需要进行回退操作

# 将版本库中的内容进行回退(不是工作区和暂存区)
# git reset [选项]
# 回退到 [commitID] 对应的版本节点# 只会回退版本库中的内容,不会改变工作区和暂存区
git reset --soft [commitID]# 回退版本库和暂存区 (这个是默认选项)
git reset --mixed [commitID]# 版本库、工作区、暂存区都会回退到上一版本(一般情况下不会使用)
git reset --hard [commitID]

针对某一个仓库,执行了回退操作之后,也可以对该次回退进行回退操作,即撤销回退操作(可以从reflog中获取commitID)

同时 reset 还可以回退到当前版本

# 回退到上一个版本
git reset HEAD# 回退到上一个版本
# 一个 ^ 代表一个版本
git reset HEAD^

撤销修改

如果对自己的代码感到不满意,就可以对修改的部分进行撤销

注意: 以下都是没有对远程仓库进行操作的

# 场景一: 没有进行add提交
# 必须要加 -- ,这个是代表使当前文件回到最近一次的add或者commit
git checkout -- [file_name] # 要进行撤销操作的文件名# 场景二: 进行了add,但是没有进行commit提交
git reset# 场景三: 进行了add和commit提交
git reset --hard [HEAD]# 回退到上一个版本

如果已经将代码推送到了远程仓库,直接使用以上的语句可能达不到想要的结果

标签管理

可以对某一次提交进行标识,仓库中,refs就会存储tag标签

# 先切换到想要打标签的分支上
git branch branch_master# 标记最新的一次提交
git tag [标签名]# 标记某次提交
git tag [标签名] commitID# 对标签进行描述
git tag -a [标签名] -m "描述" [commitID/没有就是最新版本]# 查看有哪些标签,这里的排序不是根据设计的时间来排序的,而是符号顺序
git tag# 查看标签描述
git show [标签名]# 删除标签
git tag -d [标签名]

分支管理

master就是一个分支(主分支)

创建分支

首先我们要知道,HEAD指向的分支就是我们工作的分支,也就是说,提交到的分支是由HEAD决定的

# 先查看当前分支
git branch# 创建本地分支 创建之后再查看,就可以看到当前分支的存在了
# 创建之后的新分支,会指向当前最新的提交
git branch branch_name

切换分支

切换分支之后,更新之后提交的代码就会上传到切换后的分支,而不是master分支,但是需要注意的是,提交的都还是在这个仓库里面的

# 切换到对应分支,这里的 checkout 不需要加 --
git checkout branch_name# 查看当前分支就可以看到我们进行了切换
# * 所在的分支就是当前操作分支
git branch# 创建并直接切换到分支
git checkout -b branch_name

合并分支

正常合并

合并分支的时候,一定要先切换到master分支

# 切换到master分支
git checkout master# 合并分支,输入被合并的分支名
git merge branch_name# 不使用fast-forword模式
git merge --no-ff -m "合并信息" [branch_name]

合并冲突

有些时候,在进行合并操作的时候,会合并失败,会返回信息显示我们的分支和master分支中有部分冲突

比如,当branch1需要合并到master,但是branch1对某一个文件的内容进行了修改,此时进行合并,就不知道要以master为准还是以branch1为准,这个时候就会提示有冲突

冲突需要手动解决!!! 推荐先合并到其他分支,不会出现冲突之后,再合并到master,这样就不会影响到master分支

进入冲突文件,删除不想保留的部分,进行二次提交

删除分支

不能在当前分支上删除当前分支

删除分支之后,合并的部分是不会被撤销的

# 切换分支
git checkout other_branch_name# 删除分支
git branch -d branch_name# 强行删除
git branch -D branch_name

BUG分支

当在线上运行某程序的时候,如果出现了BUG,一般就是master分支上的代码出现了问题,这个时候就需要通过分支管理来解决BUG

需要新建一个分支来处理BUG

# 将当前正在修改的分支的工作区内容进行保存(分支1)
git stash# 切换到master分支(因为是master分支出现了问题)
git checkout master# 创建并切换新分支
git checkout -b new_branch# 修改之后,对修改部分的代码进行提交
# 合并
git checkout master
git merge --no-ff -m "提交信息" new_branch# 恢复之前正在修改的工作区,继续之前的工作
git checkout branch1
git stash pop

远程操作

克隆仓库

HTTP协议

不能在任意一个本地已存在仓库目录下进行克隆!克隆之后本地就会出现这个仓库

克隆之后就会将远程仓库的内容拉取到本地

# 仓库克隆
git clone [HTTP协议]# 查看远程仓库
git remote # origin是默认名# 查看本地仓库权限
git remote -v # push代表推送,fetch代表拉取

推送

实际上是分支和分支之间的交互

# 先在本地进行提交
git add file_name
git commit -m "提交版本信息"# 推送到远程分支
git push origin [本地仓库分支]:[推送到的远程仓库分支]
# 远程分支和本地分支一致,可以省略部分,master分支
git push origin master 

拉取

远程仓库内容版本高于本地仓库,本地就需要获取到最新的版本

# 拉取远程分支
git pull origin [远程仓库分支]:[拉取到的本地仓库分支]
# master分支
git pull origin master

远程标签

推送之前,我们要先在本地创建标签

# 推送特定标签
git push origin [标签名] # 推送所有标签
git push origin --tags# 删除标签
git push origin :[远程的标签名]

其他操作

打印日志

1.输出提交日志

# 输出素有日志
git log# 让日志浓缩成一行来进行输出(主要信息)
git log --pretty=oneline# 可视化分支路线(颜色只是为了区分不同的分支)
git log --graph --abbrev-commit

2.记录本地每次提交

git reflog

查看仓库

查看仓库状态

这个语句会输出当前所在仓库以及分支,同时会将修改但没有上传的文件列出来

没有上传到暂存区的文件标红,上传到暂存区但是没有上传到分支的文件标绿

git status

查看差异

# 显示当前工作区和暂存区之间的差异
git diff [file_name]# 显示版本库和工作区文件的差异
git diff HEAD -- [file_name]

查看分支/指向

# 查看当前head指向的分支
cat .git/HEAD# 查看master信息 对应的是最新的commitID 
cat .git/refs/heads/master

查看git对象内容

注意:每一次提交都会有一个 commitID ,文件和 commitID 是一对多的关系

git cat-file -pv [commitID] # commitID 就是提交到分支的对应编码# 查看当前树的所有已提交文件
git cat-file -p [treeID]# 查看对应提交做了哪些修改
git cat-file -p [commitID]

http://www.lqws.cn/news/564265.html

相关文章:

  • WPF学习笔记(11)数据模板DataTemplate与数据模板选择器DataTemplateSelector
  • Mybatis学习总结
  • 鸿蒙5:自定义构建函数
  • 力扣第84题-柱状图中最大的矩形
  • Leetcode 3600. Maximize Spanning Tree Stability with Upgrades
  • Docker安装的gitlab配置ssl证书
  • 协作机器人优化自动化工作流程,提升工作效率
  • vue3报错No known conditions for “./lib/locale/lang/zh-cn”
  • HTML响应式Web设计
  • 链表题解——环形链表 II【LeetCode】
  • RK3588集群服务器性能优化案例:电网巡检集群、云手机集群、工业质检集群
  • Qwen2.5-7B-Instruct模型推理速度与量化对比分析
  • 【数据集】中国2016-2022年 城市土地利用数据集 CULU
  • 4_Flink CEP
  • 现代 JavaScript (ES6+) 入门到实战(四):数组的革命 map/filter/reduce - 告别 for 循环
  • Vue3 根据路由配置实现动态菜单
  • git常见问题汇总-重复提交/删除已提交文件等问题
  • RabbitMQ 工作模式
  • 海量数据存储与分析:HBase、ClickHouse、Doris三款数据库对比
  • 用celery作为信息中间件
  • AlpineLinux安装部署MariaDB
  • 如何撰写有价值的项目复盘报告
  • 将iso镜像文件格式转换为云平台支持的镜像文件格式
  • lv_font_conv转换自定义symbol
  • 志愿填报深度解析与专业导向推荐-AI生成
  • SATA信号基础介绍
  • python基础23(2025.6.29)分布式爬虫(增量式爬虫去重)redis应用_(未完成!)
  • DOP数据开放平台(真实线上项目)
  • c++ 学习(二、结构体)
  • 非阻塞 IO