git学习笔记 |常用命令

news2025/2/4 21:56:37

文章目录

  • Git学习笔记
    • 是什么?
      • Git的工作机制
      • Git和代码托管中心
    • Git的常用命令
      • 设置签名
      • 本地库初始化 git init
      • 添加到暂存区 git add
      • 将暂存区的文件提交到本地库 git commit
      • 查看历史版本 git log/git reflog
        • 版本穿梭 git reset
    • Git的分支
      • 分支命令
        • 合并分支时代码冲突
        • 删除分支
      • 团队协作
    • GitHub
      • 创建远程库
      • 代码推送 git push
        • 团队成员邀请
      • 代码拉取 git pull
      • 代码克隆 git clone
      • SSH免密登录
    • 在文件下设置git忽略文件 .gitignore

Git学习笔记

是什么?

Git是分布式版本控制系统

版本控制是什么?
版本控制是一种记录文件内容变化,查阅特定版本修订情况的系统。

版本控制的功能
1.记录文件修改的历史记录
2.查看历史版本
3.方便版本切换

分布式
本地上有本地库,保存的是整个完整的项目(包含历史),本地可以进行版本控制。
远程库,进行所有的版本控制。

远程库挂掉之后,还可以在本地进行版本控制,只是不能向远程库提交。

Git的工作机制

在这里插入图片描述

Git和代码托管中心

代码托管中心(如GitHub):基于网络服务器的远程代码仓库,帮忙维护远程库

  • 局域网
    • GitLab
  • 互联网
    • GitHub(外网)
    • Gitee码云(国内网站)

Git的常用命令

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户签名
git inti初始化本地库
git status查看本地库状态 红色文件没有加入暂存区,绿色加入了缓存区
git add 文件添加文件到暂存区
git commit -m “日志信息” 文件名提交文件到本地库
git reflog查看历史版本
git reset --hard 版本号版本穿梭

设置签名

  • 作用:区分不同开发人员的身份
  • 辨析:这里设置的签名和代码托管中心的账号、密码没有任何关系

命令:
项目级别/仓库级别:仅在当前本地库起作用
git config user.name 用户名
git config user.email 邮箱号
系统用户级别:登陆当前操作系统的用户范围, git config --global
git config --global user.name 用户号
git config --global user.email 邮箱号
级别优先级:项目级别优于系统用户级别

本地库初始化 git init

命令:git init
效果:出现隐藏文件.git
注意:.git目录中存放的是本地库相关的子目录和文件,不要删除,也不要乱修改
作用: 把当前文件夹变为本地库,git获取管理权

添加到暂存区 git add

命令
添加文件到暂存区:git add 文件名
添加所有文件到暂存区:git add .
添加变化的文件到暂存区:git add -A
删除暂存区的文件: git rm --cached 文件名

将暂存区的文件提交到本地库 git commit

作用:将暂存区的内容提交到本地库,形成历史版本
命令
提交文件: git commit -m ”版本日志信息" 文件名
提交所有文件: git commit -m ”版本日志信息”
在这里插入图片描述
修改xxx行 = 新增xxx行和删除xxx行,只提示新增和删除

查看历史版本 git log/git reflog

若多屏显示控制方式:空格向下翻页 b向上翻页 q退出

查看完整历史版本:git log

# 8f161d814c0ba8d76415c59c93b88258ce609e7b 完整版本号
D:\ranan\snake>git log
commit 8f161d814c0ba8d76415c59c93b88258ce609e7b (HEAD -> master, origin/master)
Author: Ranan <ranan>
Date:   Mon May 2 20:40:39 2022 +0800

    first commit

查看精简历史版本:git reflog

HEAD@{移动到当前版本需要多少步}

# 8f161d8 精简版本号
$ git reflog
62d4fbc (HEAD -> master) HEAD@{0}: commit: 3
c7069e9 HEAD@{1}: commit: 2
9380b41 HEAD@{2}: commit (initial): 1

版本穿梭 git reset

本质:操作HEAD的指针,HEAD指针默认是指向最近的版本。

基于索引值操作(推荐)
git reset --hard 局部hash
先使用git reflog查看本地库的版本情况以及对于局部hash值,在使用git reset 回到第二个版本
在这里插入图片描述
日志会记录你的操作

Git的分支

有两个指针,head指针指向哪个分支,分支指针指向哪个版本

程序员将自己的工作从开发主线上分离开来,开发自己的分支不会影响主线分支的运行。

优势

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可

分支命令

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上
# 创建分支
NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (master)
$ git branch hot-fix

# 查看分支
NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (master)
$ git branch -v
  hot-fix 62d4fbc 3
* master  62d4fbc 3

# 切换分支
NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (master)
$ git checkout hot-fix
NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (hot-fix)

# 修改测试文件然后提交到本地库
# .... 

# 切换到master分支
NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (hot-fix)
$ git checkout master

# hot-fix 合并到master上
NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (master)
$ git merge hot-fix
Updating 62d4fbc..8bf846e
Fast-forward
 test | 1 +
 1 file changed, 1 insertion(+)

合并分支时代码冲突

合并分支时,两个分支在同一个文件的同一位置有两套完全不同的修改时会产生代码冲突(以哪个分支的代码为主?)
此时需要人为决定

# master分支修改第三行
NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (master)
$ cat test
hello1
hello2
hello3 xxx
hello4

#hot-fix分支修改第四行
NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (hot-fix)
$ cat test
hello1
hello2
hello3 
hello4 yyy

#切换回master,合并hot-fix分支
NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (master)
$ git merge hot-fix
Auto-merging test
CONFLICT (content): Merge conflict in test
Automatic merge failed; fix conflicts and then commit the result.

# 查看文件 (master|MERGING)正在合并中
NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (master|MERGING)
$ cat test
hello1
hello2
<<<<<<< HEAD
hello3 xxx
hello4
======= # 这下面是要合并的代码
hello3
hello4 yyy
>>>>>>> hot-fix

一个修改第三个一个修改第四行没有修改同一行为什么会冲突?
https://blog.csdn.net/weixin_44585148/article/details/120298587

修改前先拉去最新版本。

解决办法
第一步:自行修改冲突文件 删除标识信息和处理冲突的行
比如让修改都生效

NINGMEI@DESKTOP-IK6KIFG MINGW64 /d/ranan/git_test (master|MERGING)
$ cat test
hello1
hwllo2
hello3 xxx
hello4 yyy

第二步:git add 文件名
第三步:git commit-m”日志信息”
注意:此时 commit 一定不能带具体文件名
此时处于正在合并中,两个分支都有该文件。不带具体文件名,意思是以本分支为主

删除分支

删除本地分支
git branch -d 本地分支名A需要切换到其他分支下才能删除,处于分支A的时候,无法删除分支A

如果本地分支A下有未合并的更改或未推送的提交,会提示无法删除

  • 方法1:将其提交之后删除
  • 方法2:强制删除git branch -D 本地分支名A

团队协作

  • 团队内协作
    在这里插入图片描述
  • 跨团队协作
    在这里插入图片描述
    在GitHub发送拉取请求
    在这里插入图片描述

GitHub

创建远程库

创建远程库:https://github.com/xxxx/xxxx.git

创建别名 git remote add 别名 远程库地址
查看别名: git remote -v
创建别名的作用: 远程库太长了可以创建别名,下次上传可以直接用别名上传
在这里插入图片描述

代码推送 git push

命令:git push 别名 分支

说明:
1.会弹窗登录GitHub
2.需要加入团队才可以往远程库推送代码

团队成员邀请

在这里插入图片描述

代码拉取 git pull

命令:git pull 别名 分支
说明:拉取动作会自动将拉去代码提交本地库

如果不是基于GitHub远程库的最新版本所作的修改,必须先拉取下来再修改,不然会发生代码冲突

代码克隆 git clone

命令:git clone 仓库地址
作用:①完整的把远程库下载到本地 ②创建origin远程地址别名,这里创建的别名是固定的origin ③初始化本地库
说明: 克隆代码不需要登录GitHub账号

SSH免密登录

第一步:生成ssh(在家目录用户目录)
ssh-keygen ct rsa -C 邮箱账号

说明
1.注意C大写
2.在主目录下生成的密钥在 /c/Users/用户名/.ssh/id_rsa 里

第二步:查看并复制ssh(需在.ssh目录下执行 cd .ssh进入)
cat id_rsa.pub

第三步:复制密钥内容添加到 github 上
在这里插入图片描述

使用ssh协议上传文件到仓库,SSH链接也可以设置别名

git push -u git@github.com(SSH链接) master

在文件下设置git忽略文件 .gitignore

忽略哪些文件?

以vue项目为例,node_modules下载的依赖包是不用上传的,因为该文件太大了并且有包管理文件package.json,可以利用包管理文件在重新下载依赖。
忽略一些与项目实际功能无关,比如.vscode等IDE文件
目的
1.屏蔽IDE工具之间的差异
2.上传的文件尽可能下,别人下载的速度会更快,更好的体验

怎么忽略
1.创建忽略规则文件 xxx.ignore , 建议是git.ignore
为了便于让~/.gitconfig文件(.git里)引用,建议与它放在一个目录下,或者可以直接修改~/.gitconfig

git.ignore文件模板,以vue项目为例

.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln

.gitconfig里引用

//注意斜线的方向
 excludesfile = 绝对路径/git.ignore

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/761754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GBT51277-2018矿山立井冻结法施工及质量验收标准

为规范矿山立井冻结法施工及质量验收保障施T安全确保施工质量,制订本标准。 本标准适用于冰点高于一2C地下水流速小于5m/d、地温低于35C、冲积层厚度小于700m、冻结深度小于950m的立井井筒冻结法施T及质量验收。 立井冻结法施T工程承包合同和技术文件对施工质量要求不应低于本…

Android 自定义按键添加流程

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、驱动通过GPIO连接的按键二、Framework 层添加按键响应方法三、参考文献 一、驱动通过GPIO连接的按键 此类按键采用GPIO来连接&#xff0c;通过监测…

变压器试验介质损耗

试验目的 介质损耗因数 tanδ (% ) 是判断变压器绝缘状态的一种较有效的手段, 主要用来检 查变压器整体受潮、 油质劣化及严重的局部缺陷等, 但不一定能发现变压器局部受潮 等集中性局部缺陷。 试验设备 异频介质损耗测试仪 厂家&#xff1a; 湖北众拓高试 试验接线 (1) 介…

MacBook M1 VulnHub靶机搭建(arm Mac搭建x86 ova镜像)

个人博客: xzajyjs.cn 自从换了M1系的arm Mac后&#xff0c;原本的Vulnhub上的几乎所有靶场按照之前的方法都无法正常搭建了&#xff08;VirtualBox&#xff09;&#xff0c;在外网论坛上找了一遍&#xff0c;有一个相对麻烦一些的替代方法&#xff0c;但效果还是不错的&#x…

MFC演示双缓冲绘图算法

VC6新建一个单文档工程&#xff1b; 先添加一个小球类&#xff1b; 头文件和cpp文件如下&#xff1b; #if !defined(AFX_SPHERE_H__835B2B85_5B12_4409_AEC0_9C5062625DDE__INCLUDED_) #define AFX_SPHERE_H__835B2B85_5B12_4409_AEC0_9C5062625DDE__INCLUDED_#if _MSC_VER &…

MySQL-DQL-基本查询

数据库操作DQL语句 DQL DQL英文全称Data Query Language&#xff08;数据查询语言&#xff09;&#xff0c;用来查询数据库表中的记录关键词&#xff1a;SELECT语法 基本查询条件查询&#xff08;where&#xff09;分组查询&#xff08;group by&#xff09;排序查询&#xff0…

智能办公解决方案——电子标签

智能电子办公标签概要&#xff1a; 电子会议桌牌它外形美观大方&#xff0c;完全取代了传统塑料、纸质或铜制桌牌&#xff0c;是会议桌面显示设备的一大创新&#xff0c;与传统桌牌相比&#xff0c;具有信息化程度高、可反复使用的特点&#xff0c;是现代信息化会议的理想工具…

小物体检测、分割论文

文章目录 2023CaraNet: Context Axial Reverse Attention Network for Segmentation of Small Medical Objects 2023 CaraNet: Context Axial Reverse Attention Network for Segmentation of Small Medical Objects 摘要&#xff1a; 目的&#xff1a;准确、可靠地分割医学图…

Ubuntu 考虑采用新的 “统一默认安装 (unified default install)”

导读Ubuntu安装程序中的 “最小化安装” (Minimal installation) 是该发行版多年来最受欢迎的功能之一。 当用户选择 Ubuntu 的 “最小化安装” 选项时&#xff0c;可以在安装更少的预装应用程序情况下&#xff0c;获得完整、功能齐全的 Ubuntu 系统。 但这个功能可能要被砍掉…

【CSDN新星计划】初阶牛C/C++赛道——顺序程序设计(C语句②)

目录 3.2 最基本的语句——赋值语句 3.2 最基本的语句——赋值语句 在C程序中最常用的语句是:赋值语句和输入输出语句。其中最基本的是赋值语句程序中的计算功能大部分是由赋值语句实现的,几乎每一个有实用价值的程序都包括赋值语句。有的程序中的大部分语句都是赋值语句。先介…

进程间通信之命名管道

进程间通信之命名管道 命名管道1.命名管道概念2.创建一个命名管道2.1用命名管道实现通信2.2用命名管道实现server&client通信 命名管道 1.命名管道概念 管道应用的一个限制就是只能在具有共同祖先&#xff08;具有亲缘关系&#xff09;的进程间通信&#xff0c;这种通信可…

高并发的哲学原理(十)-- 理论无限容量:站在地球表面

前面两篇文章每一篇都花了我五十个小时以上&#xff0c;写的我是欲仙欲死&#xff0c;本文我们来务点虚&#xff0c;上上价值。 我们将从微服务架构讲起&#xff0c;一步一步追根溯源&#xff0c;找寻“分布式数据库”在另一个维度的投影&#xff0c;探寻基建、应用、服务、组织…

Java:运算符、位运算 的运算规则与用法详解

目录 运算符Math数学函数与常量类型转换强制类型转换自增和自减运算符关系运算符三元运算符 位运算& 与| 或^ 异或~ 按位取反<< >> 左移 右移运算符优先级 运算符 Math数学函数与常量 import java.lang.Math.*; public class Test{public static void main(S…

java项目之智能仓储系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的智能仓储系统。技术交流和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&…

十八、网页端在移动端的像素

一、简介 -1. 在不同的屏幕&#xff0c;单位像素的大小是不同的&#xff0c;像素越小&#xff0c;屏幕越清晰。 手机端的像素就是宽度和高度&#xff0c;如iphone6 4.7寸 750 x 1334。 -2. 手机的像素点 远远小于 计算机的像素点。 问题&#xff1a;一个宽度为900px的网页在i…

探索AI图像安全,助力可信AI发展

探索AI图像安全&#xff0c;助力可信AI发展 0. 前言1. 人工智能发展与安全挑战1.1 人工智能及其发展1.2 人工智能安全挑战 2. WAIC 2023 多模态基础大模型的可信 AI2.1 WAIC 2023 专题论坛2.2 走进合合信息 3. AI 图像安全3.1 图像篡改检测3.2 生成式图像鉴别3.3 OCR 对抗攻击技…

这所211保护一志愿,但复试太难了,考八门课!

一、学校及专业介绍 华中师范大学&#xff08;Central China Normal University&#xff09;&#xff0c;简称“华中师大”&#xff0c;位于湖北省武汉市&#xff0c;是中华人民共和国教育部直属重点综合性师范大学&#xff0c;位列国家“双一流”、“211工程”、“985工程优势…

C++ 在线刷题网站

文章目录 1. 前言2. 效果展示3. 框架4. common4.1 工具类4.2 日志 5. 编译5.1 前言5.2 正文5.3 PathUtil5.4 Compile 6. 运行6.1 限制进程资源6.2 Run 7. 执行7.1 json7.2 Start 参数7.3 FileUtil7.4 Start 8. 启动服务8.1 安装 httplib8.2 compile_server.cpp 9. 测试 compile…

前端学习记录~2023.7.15~CSS杂记 Day7

前言一、介绍 CSS 布局1、正常布局流2、display 属性3、弹性盒子&#xff08;1&#xff09;设置 display&#xff1a;flex&#xff08;2&#xff09;设置 flex 属性 4、Grid 布局&#xff08;1&#xff09;设置 display&#xff1a;grid&#xff08;2&#xff09;在网格内放置元…

吴恩达教授深度学习--神经风格转换算法

什么是神经风格迁移&#xff1f; 假设你有一张内容图片C&#xff08;Content&#xff09;和一张具有独特风格S&#xff08;Style&#xff09;的图片&#xff0c;神经风格迁移可以让这两张图片结合&#xff0c;让原始图片具有图片S的风格。所以神经风格迁移可以解决的问题是&am…