[Git] Git零基础?带你快速入门,示例练习上手

news/2024/11/23 4:00:35/

😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘
🤗专栏:算法学习
🤗专栏:Go实战
💬个人主页:个人主页

在这里插入图片描述

参考学习资料:黑马程序员Git教程

文章目录

  • 版本控制器方式说明
  • Git安装和配置
    • 安装
    • 配置
  • Git工作流程图
    • 名词解释
    • 常用命令
    • Git实例练习
  • Git分支
    • 分支练习
    • 解决冲突
  • Git远程仓库
    • 添加远程仓库
    • 克隆仓库,抓取和拉取
    • 解决合并冲突

版本控制器方式说明

SVN 和 Git
SVN:集中式版本控制,版本库是放在中央服务器中,从中央服务器进行相关代码下载,必须联网才行,个人修改后提交到中央服务器
GIt:分布式版本控制,不需要中心服务器,有一个共享版本库,同时每一个开发人员自己的电脑也是一个完整的版本库
Git特点:速度,简单的设计,允许千万个并行开发的分支,完全分布式,高效管理类似Linux内核一样的超大规模项目

Git安装和配置

安装

git官方下载地址:链接 无脑安装即可
安装成功后:当我们在桌面或者文件夹点击鼠标右键的时候,出现
在这里插入图片描述
Git GUI : GIt提供图形界面工具
Git Bash: Git提供命令行工具

配置

打开Git Bash,首先是需要配置相关用户名和用户的邮箱(这两个是必须要配置的),如下图所示,输入下图命令进行查看是否配置成功:
在这里插入图片描述

配置命令:没有太严格,简单点输入也行
git config --global user.name “xxx”
git config --global user.password “xxx”

有时候常用的指令参数很多,我们可以通过使用别名,使用自定义命令:
注:为什么用到这一个步骤呢?因为后续我们会用到git log查看历史命令,原命令会输出非常多的信息,看起来很冗余,所以我们通过自定义命令,将命令简化为git-log,方便我们查看历史信息,看起来更可观一些

  1. 进入到自己的电脑用户目录,创建 .bashrc 文件,可以通过在该目录下打开git bash:
    输入命令,即表示在该目录下创建bashrc文件

touch ~/.bashrc
在这里插入图片描述

  1. 进入bashrc文件,进行编译,输入:
    在这里插入图片描述

#用于输出git提交日志 相当于进行优化操作了,输出的时候会比较简洁
alias git-log=‘git log --pretty=oneline --all --graph --abbrev-commit’
#用于输出当前目录所有文件及基本信息
alias ll=‘ls -al’

  1. 解决中文乱码问题:
    首先打开Git bash 输入命令:
    在这里插入图片描述
    然后进入到你的git存放地址:你的存放地址/etc/bash.bashrc 文件最后两行添加命令;

#解决中文乱码
export LANG=“zh_CN.UTF-8”
export LC_ALL=“zh_CN.UTF-8”

Git工作流程图

在这里插入图片描述

名词解释

.git : 版本库 当我们使用git管理文件时,把这个文件称为版本库,另一个作用是 它在创建的时候,会自动创建master分支,并将head指针指向master分支
工作区: 本地项目存放的位置
暂存区: 暂时存放文件的地方,通过add命令将工作区的文件添加到缓冲区
本地仓库: 使用commit命令将暂存区文件添加到本地仓库,head指针指向的就是master分支
远程仓库: 使用github托管我们的项目,它就是一个远程仓库,通过使用clone命令将远程仓库代码拷贝下来,本地代码更新后,通过push拖送给远程仓库。

常用命令

git add . // 将该目录下除了.git文件的其他所有文件 从工作区添加到暂存区
git status //查看文件的状态
git commit -m “xxx” //将暂存区文件添加到本地仓库,并且备好注释
git log //查看历史
git-log //因为我们上面在配置的时候自定义了命令,所有会有这个git-log,输出更简短的历史信息,方便我们去查看
git reset --hard commitID //回溯版本号,commitID 版本号 可以通过git log查看
git reflog //可以查看到已经删除的记录

Git实例练习

如下图所示,创建一个文件夹,进行练习,可以跟着图片中的代码进行相关练习
第一步:创建一个文件夹,并且在内部创建一个txt文本提交到本地仓库
在这里插入图片描述
第二步:我们可以通过git-log 查看历史记录
在这里插入图片描述
第三步:对文本进行修改,再次进行提交到本地仓库在这里插入图片描述
第四步:查看历史版本,并且回到修改前的状态
在这里插入图片描述
第五步:git add . 表示添加该目录下的所有文件,当我们不想添加所有文件的时候我们可以进行设置,这个时候可以看到,状态下没有显示two.a文件,我们把.gitignore文件删除可以对比一下
在这里插入图片描述
第六步:删除.gitignore 形成对比查看,可以形成鲜明的对比
在这里插入图片描述
重要:第七步:也就是.gitignore文件失效或者没起对应的作用。需要注意的一点:当你的two.a文件已经提交了,你再创建.gitignore文件,去添加的时候,查看git status时会发现two.a文件仍然存在在暂存区内,这时候我们需要去先清理对应文件的缓存,使用git rm -r --cached two.a 去放弃对应文件的追踪,再次添加的时候,可以实现对我们想要忽略文件的忽略

Git分支

分支:可以把工作从开发主线上分离开来进行重大的bug修改,开发新功能,以免影响开发主线
同时git也提供了一个HEAD指针,表示当前在哪一个分支上,从而避免了错乱
相关命令:

git branch //查看分支
git branch xxx //创建分支
git checkout -b xxx //切换分支 不存在的话就创建
git merge xxx //合并分支
git branch -d xxx //删除分支,需要做各种检查
git branch -D xxx // 删除分支,强制删除

分支练习

题目:创建一个名为dev的分支,切换到dev分支,然后在该分支中创建一个文件hello.txt,之后查看git-log会发现dev分支内已经有了,然后添加并且提交到本地仓库;切换回主分支,你们发现主分支内没有hello.txt文件,查看git-log 可以看到所有分支情况,之后使用git合并分支命令,(一般都是把分支合并到主分支上面),查看git-log命令查看分支情况

操作如下:
在这里插入图片描述
在dev分支上查看情况:可以看到head指针指向当前分区,也就是dev分区,可以在文件中看到hello文件的存在
在这里插入图片描述
切换到主分区,会发现没有hello文件,因为我们是在dev分区上创建的hello文件,然后将dev分区合并到主分区
在这里插入图片描述
合并分支,会发现master主分区可以看到hello文件
在这里插入图片描述

解决冲突

就着上面的例子,当分支和主分支同时修改同一个数据时候,再一次合并时候就会发生冲突,此时计算机会把问题抛给我们去解决。具体情况看下面的代码和图片实例:
在master主分支中,修改hello文件中count=1并提交到仓库中
在这里插入图片描述
切换分支,同样修改hello文件中内容count=2提交到仓库中
在这里插入图片描述
切换到主分支并进行合并分支,会发现发生冲突报错,此时hello文件内部会有两个值,需要我们去解决
在这里插入图片描述
我们可以自己选择去留下一个或者重新定值都可以
修改完之后,这个时候,我们需要重新去添加和提交到本地仓库,一定不忘记,然后重新进行合并就可以了
在这里插入图片描述
最终合并完的结果如下图所示:
在这里插入图片描述
注意:如果创建的分支上面有未合并到主分支的信息,使用git branch -d xxx 删除不掉,因为git害怕你是误删除,所以使用git branch -D xxx 强制删除可以去掉
特殊点:快进模式 当分支和主分支同时对一个文件进行修改时,会出现桥状;当只有分支修改了文件,主分支没有进行修改,当向主分支合并时就会出现快进模式,`这一块用图来理解很容易
在这里插入图片描述
合并之后:
在这里插入图片描述

Git远程仓库

配置秘钥:在git bash中进入 这里以链接码云为例子

ssh-keygen -t rsa //之后不断回车就可以 会自己覆盖之前的秘钥,之前秘钥如果绑定有很多东西,可以先复制一份备份
cat ~/.ssh/id_rsa.pub //获取公钥
ssh -T git@gitee.com //验证是否成功 第一次登录的话 输入yes

添加远程仓库

相关命令:

git remote add origin(这个是别名) xxx(你仓库地址) // 本地连接远程仓库
git remote // 查看远程仓库
git push origin master(本地分支):master(远端分支) //将本地仓库推到远程仓库origin分支去,名字一样可以省略
git push --set-upstream origin master //推送到远端的同时并且建立起和远端分支的关联关系
git branch -vv //查看本地分支和远程仓库分支关系

你创建码云之后,复制ssh仓库地址,在本地连上远程仓库
在这里插入图片描述
本地连接远程仓库,如果报错的话,先输入git init 进行初始化

git remote add origin xxx(仓库ssh地址)

在这里插入图片描述
将本地仓库推到远程仓库:
在这里插入图片描述

克隆仓库,抓取和拉取

当仓库文件克隆到本地之后,后续命令操作

git clone xxx地址 命名 (命名可有可无) // 拉取到本地
当本地仓库进行修改时,使用git push 传到远程仓库,本地克隆下来的只需要git poll就可以同步了
git fetch 只抓到本地 git pull [抓取到本地并且合并等同于fetch+merge]

解决合并冲突

当一段时间内,a,b两个用户同时修改了同一个文件的同一个位置,此时合并时就会发生冲突,a,
b同时在本地仓库提交了,a优于b推到了远程仓库,b要推到远程仓库,需要先拉取远程仓库的提交,然后合并后才可以推送到远端分支

本地仓库一个,另外从远程仓库再拉下来一个,他们相同,现在对共同文件hello文件进行修改
在这里插入图片描述此时A优于B提交,B提交出错,所以应该使用git pull先拉下来,合并之后,再进行提交,就可以解决

在这里插入图片描述
B修改完后,进行添加提交推到远程仓库
在这里插入图片描述
最后A在git pull下来,最后实现A与B同步
在这里插入图片描述

在这里插入图片描述
码字不易,感谢您的关注和支持!!!如果感觉对您有所帮助,给个一键三连吧!


http://www.ppmy.cn/news/58056.html

相关文章

【C语言】学习

文章目录 前言1. warm up1.1 输出helloworld1.2 示例1.3 C语言程序结构 前言 以后要学习操作系统深度学习了&#xff0c;所以C语言就不可缺少了。 1. warm up 1.1 输出helloworld #include<stdio.h> void main() {printf("Hello World!!"); }std 标准 io输…

项目管理-计算专题(挣值分析)

挣值分析法 是对项目进行跟踪与预测的方法&#xff1b;项目有良好的任务细分以及合理的日程安排&#xff1b;不牵涉到复杂的数学计算&#xff1b;在软件项目管理中&#xff0c;一般以一周为单位定期进行。 项目案例 有一个砌墙项目&#xff0c;需要完成一堵长度为100米的围墙…

JavaScript学习笔记二

数组拓展&#xff1a; 都不改变原数组 indexOf lastIndexOf forEach map filter reduce 伪数组没法用 indexOf&#xff1a; 从前往后寻找数值的下标&#xff0c;单个 /*indexOf(元素,start)作用:查找元素在数组中第一次出现时下标的位置&#xff0c;如果没有返回-1返回值:下标*…

VBA替换中文文献引用出现的et al.和and

问题描述&#xff1a;Endnote是常用的文献管理工具&#xff0c;并提供国标模板Chinese Std GBT7714 (numeric).ens&#xff0c;但Endnote在中英文混排上略欠考虑。Chinese Std GBT7714使用序号的形式&#xff08;******1&#xff09;对文献进行引用&#xff0c;但有时我们需要以…

【Mysql】基础篇:DML(data manipulation language)语句:增、删、改数据库数据总结

博主简介&#xff1a;努力学习的大一在校计算机专业学生&#xff0c;热爱学习和创作。目前在学习和分享&#xff1a;数据结构、Go&#xff0c;Java等相关知识。博主主页&#xff1a; 是瑶瑶子啦所属专栏: Mysql从入门到精通近期目标&#xff1a;写好专栏的每一篇文章 目录 一、…

爬取景区源码

import requests import json import csvpostUrl "https://m.ctrip.com/restapi/soa2/13444/json/getCommentCollapseList"# 将景点poiId和名称添加到此处 urls [["75487323","凤凰雾涧江景民宿"],["11052220","古童临江客栈&q…

【容器化应用程序设计和开发】2.2 容器编排和Kubernetes调度

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;2.1 容器化基础知识和Docker容器 第二章&#xff1a;2.2 Dockerfile 的编写和最佳实践 容器化应用程序设计和开发 2.3 容器编排和Kubernetes调度 2.3 容器编排和Kubernetes调度 容器编排是…

超全!超详细!2023大 厂 前端面试题手册

HTML、CSS、浏览器 相关 ................................................................... 1 1.网络中使用最多的图片格式有哪些 ............................................................................................. 1 2. 请简述 css 盒子模型 ........…