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

Git学习记录

文章目录

  • 1. 常见指令
    • 1.1 配置
    • 1.2 创建
    • 1.3 查看关联的远程仓库列表
    • 1.4 添加和提交文件
    • 1.5 查看记录
    • 1.6 回退和查看差异
    • 1.7 删除文件
    • 1.8 分支
    • 1.9 操作远程仓库
  • 2. 相关概念
  • 3. 工作流模型
  • 4. 常见问题
    • 4.1 AS上配置Git
    • 4.2 合并冲突
    • 4.3 merge和rebase的区别
    • 4.4 git log和git reflog的区别
    • 4.5 git fetch和git pull 区别
    • 4.6 在Push代码时遇见冲突时用Git Merge还是Git Rebase?

1. 常见指令

1.1 配置

git config --global user.name “Tony”
git config --global user.email “tony@gmail.com”

1.2 创建

git init
初始化一个 Git 仓库,它将创建一个 .git 文件夹,后续的操作记录都会在此文件夹里,相当于 Git 的数据库。

1.3 查看关联的远程仓库列表

git remote -v

$ git remote -v
origin  https://gitee.com/XX/as_test.git (fetch)
origin  https://gitee.com/XX/as_test.git (push)
当你执行 git fetch 或 git pull 时,Git 会从这个 URL 拉取最新的代码。当你执行 git push 时,Git 会将你的代码推送到这个 URL 对应的远程仓库。
1.增加一个远程仓库git remote add 名称 远程仓库urlgit remote add origin 远程仓库url
2.删除git remote remove origin
3.提交到远程仓库git push origin master  用于将本地分支(这里是 master 分支)的更新推送到远程仓库(origin) 
4.clone远程源git clone 远程源地址

1.4 添加和提交文件

git add (工作区 --> 暂存区)
git commit -m “描述” (暂存区 --> 本地仓库)
git commit -a -m (-a参数可以同时完成两部操作)

1.5 查看记录

git status
git log (–oneline) 简洁显示
git log after/before 2025-7-18 查看指定时间的日志
git ls-files 查看暂存区的内容
git reflog命令:可以叫做显示可引用的历史版本记录。
在这里插入图片描述

1.6 回退和查看差异

git reset (默认为mixed)
小技巧:HEAD~数字 指定当前第几个版本

    	# 回退到上一个版本:git reset --hard HEAD^git reset ----hard HEAD~# 回滚到上三个版本:git reset --hard HEAD^^^git reset --hard HEAD~3

在这里插入图片描述
git diff 默认查看工作区和缓存区的区别
git diff HEAD 工作区和版本库的区别
git diff --cached 暂存区和版本库的区别

git diff id1 id2 + 文件名 比较两个特定版本的特定文件的区别
在这里插入图片描述

1.7 删除文件

git rm 文件名
一定要记得git commit 这样才能版本库中删除

在这里插入图片描述

1.8 分支

1.创建分支git branch 分支名git branch -b 分支名  # 创建并切换
2.切换分支git checkout 分支名 由于checkout可能存在歧义,新版本使用switch
4.删除分支git branch -d 分支名   # 加-f是强制删除,不加-f,子分支没有和主分支合并是不能删除的。
5.合并分支git merge 分支名  # 将分支名合并到当前的分支git rebase # 变基
6.查询当前分支git branch
7.查看分支图git log --graph --oneline
8.删除分支git branch -d 分支名 (该分支已经被合并到别的分支上)git branch -D 分支名(强制删除分支)

1.9 操作远程仓库

git push 使用本地的对应分支来更新对应的远程分支
$ git push <远程主机名> <本地分支名>:<远程分支名>
$ git push origin master  将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新
git pull 获取并合并其他的厂库,或者本地的其他分支。
git pull <远程主机> <远程分支>:<本地分支>
git pull origin master:my_test 将origin厂库的master分支拉取并合并到本地的my_test分支上
git pull origin master  如果省略本地分支,则将自动合并到当前所在分支上
git fetch 只是从远程库下载最新代码,但并不自动合并到本地分支。

2. 相关概念

  • Git 文件的三个状态

在这里插入图片描述

  • Git 文件的生命周期图

在这里插入图片描述

3. 工作流模型

GitFLow模型
main主分支
hotfix 线上版本bug修复
release 版本发布分支
dev 开发分支
feature 等开发完后合并回开发分支
参考连接

4. 常见问题

4.1 AS上配置Git

添加链接描述
本地配置:AS设置Git路径 -> 版本控制Git创建仓库 -> 右键目录add -> commit

4.2 合并冲突

在这里插入图片描述

4.3 merge和rebase的区别

在这里插入图片描述
在这里插入图片描述

  • Git Merge
    概述
    git merge 是一种非破坏性操作,用于将两个分支的更改合并到一起。它通过创建一个新的“合并提交”(G’),将两个分支的历史联系起来。
    优点
    保留历史完整性:合并操作保持了两个分支的原始历史不变。
    简单直观:对于 Git 新手来说, merge 更易于理解和操作。
    使用场景
    git merge 特别适用于团队协作环境,其中保留完整的历史记录和明确的合并点是有价值的。
  • Git Rebase
    概述
    git rebase 重新定位分支上的更改,将它们放在另一分支的最新更改之上。这通常涉及重写提交历史,使其看起来更加线性。
    优点
    清晰的线性历史: rebase 为项目提供了一个干净、直线的历史。
    避免冗余合并提交:有助于减少不必要的合并提交。
    使用场景
    rebase 是理想的选择,当你想要整理个人分支上的提交,或者在团队中共享更改之前更新你的特性分支。

4.4 git log和git reflog的区别

添加链接描述
使用git log命令只可以查看到HEAD指针及其之前的版本信息,如果版本发生过回退操作,则可能会出现,HEAD指针之后仍存在历史提交版本的情况,而这些提交版本信息通过git log命令是看不到的。

4.5 git fetch和git pull 区别

添加链接描述
Git fetch命令只是从远程库下载最新代码,但并不自动合并到本地分支。它只是将最新代码下载到本地仓库的一个特殊的分支,称为远程跟踪分支。
Git pull命令是从远程库获取最新代码并自动合并到本地分支的快捷方式。它实际上包含了两个操作:fetch和merge。

4.6 在Push代码时遇见冲突时用Git Merge还是Git Rebase?

添加链接描述

如果选择使用 git merge 来解决 git push 时的冲突,你可以先将远程分支的更改合并到你的本地分支。
操作步骤:
先拉取远程分支的更新: git pull 或 git fetch 后跟 git merge。
解决可能出现的任何合并冲突。
完成合并后再次尝试 git push。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ES6 正则的扩展(十九)
  • 实战:详解Spring创建bean的流程(图解+示例+源码)
  • vscode搭建PyQt + Quick开发环境
  • 阿里云服务器 篇五:短链服务网站
  • 使用NIFI连接瀚高数据库_并从RestFul的HTTP接口中获取数据局_同步到瀚高数据库中---大数据之Nifi工作笔记0067
  • Vue的自定义事件:组件间通讯的艺术
  • GitHub 令牌泄漏, Python 核心资源库面临潜在攻击
  • Linux云计算 |【第一阶段】ENGINEER-DAY2
  • 敏捷开发适用于哪些项目?你用对了吗?
  • 《Exploring Aligned Complementary Image Pair for Blind Motion Deblurring》
  • 导航专业入门,高考/考研假期预习指南
  • MKS流量计软件MFC通讯驱动使用于C和P系列MFC控制USB接口W10系统
  • docker compose 部署交互模式的容器-以Ubuntu为例
  • Shell 构建flutter + Android 生成Apk
  • A Survey on Multimodal Large Language Models综述
  • 【css3】浏览器内核及其兼容性
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 2017年终总结、随想
  • Android框架之Volley
  • express如何解决request entity too large问题
  • Intervention/image 图片处理扩展包的安装和使用
  • Laravel核心解读--Facades
  • magento 货币换算
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Python利用正则抓取网页内容保存到本地
  • Python中eval与exec的使用及区别
  • Redis 懒删除(lazy free)简史
  • uni-app项目数字滚动
  • uva 10370 Above Average
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从setTimeout-setInterval看JS线程
  • 世界上最简单的无等待算法(getAndIncrement)
  • 数组的操作
  • 一个SAP顾问在美国的这些年
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ###STL(标准模板库)
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (5)STL算法之复制
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (苍穹外卖)day03菜品管理
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)计算机毕业设计ssm电影分享网站
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (十三)Flink SQL
  • (算法)Game
  • (一)VirtualBox安装增强功能
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .gitignore文件—git忽略文件
  • .net Application的目录
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net core 管理用户机密