Git笔记

目录

Git概念

git配置

git的安装

远程仓库配置

忽略跟踪文件

git指令

文件跟踪指令:

查看提交历史

撤消操作

远程仓库的使用

标签

分支

常见错误提示及解决方法

git patch的运用

git中branch/commit/add之间关系

Windows下Git的使用


Git概念

Git 是把数据看作是对小型文件系统的一组快照。 每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 Git 对待数据更像是一个 快照流

git配置

git的安装

在 linux上:

apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev  //获取源码
tar 0zxf git-1.7.2.2.tar.gz //对源码进行解包
//对源码进行编译
cd git git-1.7.2.2
make prefix=/usr/local all
sudo make prefix=/usr/local install

//获取更新版本
git clone git://gitkernel.org/pub/scm/git/git.git


//或直接运用二进制安装程式安装到git到Linux
apt-get install git

设置不跟踪文件,添加.gitignore文件,配置需要忽略的文件

参考网址:Git - 安装 Git

远程仓库配置

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
$ git config --list

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"  :生成秘钥,进行远程仓库连接

忽略跟踪文件

创建一个名为 .gitignore 的文件,列出要忽略的文件模式

$ cat .gitignore
*.[oa]
*~

第一行告诉 Git 忽略所有以 .o 或 .a 结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的。 第二行告诉 Git 忽略所有以波浪符(~)结尾的文件,许多文本编辑软件(比如 Emacs)都用这样的文件名保存副本。 此外,你可能还需要忽略 log,tmp 或者 pid 目录,以及自动生成的文档等等。 要养成一开始就设置好 .gitignore 文件的习惯,以免将来误提交这类无用的文件

git指令

git init:在当前文件夹下创建管理版本仓库

文件跟踪指令:

git status -s:一种更为紧凑的格式输出

git status .:查看当前文件夹里的文件修改状态

git diff:查看文件缓存前后的区别,工作目录中当前文件和暂存区域快照之间的差异, 就是修改之后还没有暂存起来的变化内容

git diff --cached:查看已暂存的将要添加到下次提交里的内容

git rm --cached README:把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中

git add 文件名:将文件添加到仓库

git commit -m"版本说明":一般执行 git add 命令后使用

git commit -a -m "版本说明" :可以跳过git add的使用

git commit --amend:修改之前提交的信息,这样代码只会提交最新修改的

查看提交历史

git log :查看仓库内的版本情况

git log -p:常看每次提交的差异

git log -p -N:查看近N次的差异

git log --stat:快速浏览某个搭档提交的 commit 所带来的变化

git log --pretty=format:"%h - %an, %ar : %s":定制要显示的记录格式

git log --pretty=format 常用的选项
选项说明

%H

提交对象(commit)的完整哈希字串

%h

提交对象的简短哈希字串

%T

树对象(tree)的完整哈希字串

%t

树对象的简短哈希字串

%P

父对象(parent)的完整哈希字串

%p

父对象的简短哈希字串

%an

作者(author)的名字

%ae

作者的电子邮件地址

%ad

作者修订日期(可以用 --date= 选项定制格式)

%ar

作者修订日期,按多久以前的方式显示

%cn

提交者(committer)的名字

%ce

提交者的电子邮件地址

%cd

提交日期

%cr

提交日期,按多久以前的方式显示

%s

提交说明

git log 的常用选项
选项说明

-p

按补丁格式显示每个更新之间的差异。

--stat

显示每次更新的文件修改统计信息。

--shortstat

只显示 --stat 中最后的行数修改添加移除统计。

--name-only

仅在提交信息后显示已修改的文件清单。

--name-status

显示新增、修改、删除的文件清单。

--abbrev-commit

仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。

--relative-date

使用较短的相对时间显示(比如,“2 weeks ago”)。

--graph

显示 ASCII 图形表示的分支合并历史。

--pretty

使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。

git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \
   --before="2008-11-01" --no-merges -- t/:2008 年 10 月期间,Junio Hamano 提交的但未合并的测试文件,示例结果

5610e3b - Fix testcase failure when extended attributes are in use
acd3b9e - Enhance hold_lock_file_for_{update,append}() API
f563754 - demonstrate breakage of detached checkout with symbolic link HEAD
d1a43f2 - reset --hard/read-tree --reset -u: remove unmerged new paths
51a94af - Fix "checkout --track -b newbranch" on detached HEAD
b0ad11e - pull: allow "git pull origin $something:$current_branch" into an unborn branch
Table 3. 限制  git log 输出的选项
选项说明

-(n)

仅显示最近的 n 条提交

--since--after

仅显示指定时间之后的提交。

--until--before

仅显示指定时间之前的提交。

--author

仅显示指定作者相关的提交。

--committer

仅显示指定提交者相关的提交。

--grep

仅显示含指定关键字的提交

-S

仅显示添加或移除了某个关键字的提交

git log --oneline --decorate --graph --all:查看所有分支的情况

git log -p filenam:可以显示每次提交的diff

git log filename:可以看到fileName相关的commit记录

git log --pretty=oneline filename: 显示所有提交记录,每条记录只显示一行

撤消操作

git commit --amend         //修改commit文件

git reset HEAD file:将文件从暂存区取消,取消后以本地修改为主

git checkout -- file:将本地的修改,撤回到未修改状态。

git reset --soft HEAD^:撤回提交的commit,修改的文件依旧保留

git reset file:将撤回的修改一起合并

git reset --hard HEAD^:回退到上一个版本,git log 命令查找不到最初使用版本情况

git reset --hard 版本号:回退到版本还的版本,不可逆

git reflog :记录了每个版本的版本号,在运用 git reset --hard 版本号 可以回到任意版本WQ

远程仓库的使用

git remote -v:查看连接的远程仓库

git remote add URLtname url:添加一个新的远程 Git 仓库,字符串 shortname来代替整个 URL示例:

$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin	https://github.com/schacon/ticgit (fetch)
origin	https://github.com/schacon/ticgit (push)
pb	https://github.com/paulboone/ticgit (fetch)
pb	https://github.com/paulboone/ticgit (push)

git fetch URLtname:从远程仓库中抓取与拉取,会抓取克隆(或上一次抓取)后新推送的所有工作。 必须注意 git fetch 命令会将数据拉取到你的本地仓库——它并不会自动合并或修改你当前的工作

git clone shortname:命令会自动设置本地 master 分支跟踪克隆的远程仓库的 master 分支(或不管是什么名字的默认分支)

git  pull shortname :通常会从最初克隆的服务器上抓取数据并自动尝试合并到当前所在的分支

git push remote-name branch-name:当你想要将 master 分支推送到 origin 服务器时(再次说明,克隆时通常会自动帮你设置好那两个名字),那么运行这个命令就可以将你所做的备份到服务器:如果推送失败,先对远程服务器上的东西同步,命令为:git pull shortname

git remote rename URLname newname:修改一个远程仓库的简写名

git remote rm URLname:删除远程仓库,不在使用

标签

轻量标签(lightweight)与附注标签(annotated)。

轻量标签:像一个不会改变的分支——它只是一个特定提交的引用。

附注标签:是存储在 Git 数据库中的一个完整对象。 它们是可以被校验的;其中包含打标签者的名字、电子邮件地址、日期时间;还有一个标签信息;并且可以使用 GNU Privacy Guard (GPG)签名与验证。 通常建议创建附注标签,这样你可以拥有以上所有信息;但是如果你只是想用一个临时的标签,或者因为某些原因不想要保存那些信息,轻量标签也是可用的。

git tag:查看标签

git tag -a TagName -m "description":创建一个附注标签是很简单的。 最简单的方式是当你在运行 tag 命令时指定 -a 选项

git tag TagName:创建轻量级标签。

git show TagName:针对附注标签:显示标签信息与对应的提交信息。轻量标签:不显示额外的标签信息,只会显示出提交信息

git tag -a TagName logID:对过去的提交打标签,logID是指commit的校验和

git push URLname TagName:创建完标签后你必须显式地推送标签到共享服务器上

git push URLname --tags

git tag -d TagName:删除掉你本地仓库上的标签

git push URLname :refs/tags/TagName:从远程仓库中移除这个标签

git checkout TagName:查看某个标签所指向的文件版本,并且切换到某个标签位置

分支

Git 的分支,其实本质上仅仅是指向提交对象的可变指针

三个将要被暂存和提交的文件。 暂存操作会为每一个文件计算校验和(使用我们在 起步 中提到的 SHA-1 哈希算法),然后会把当前版本的文件快照保存到 Git 仓库中(Git 使用 blob 对象来保存它们),最终将校验和加入到暂存区域等待提交

Git 仓库中有五个对象:三个 blob 对象(保存着文件快照)、一个树对象(记录着目录结构和 blob 对象索引)以及一个提交对象(包含着指向前述树对象的指针和所有提交信息)。

Git 的默认分支名字是 master。 在多次提交操作之后,你其实已经有一个指向最后那个提交对象的 master 分支。

HEAD 概念: 它是一个指针,指向当前所在的本地分支(译注:将 HEAD 想象为当前分支的别名)

git branch :查看分支

git branch BranchName :创建分支

git checkout -b BranchName :创建并且选择分支

git checkout BranchName :切换分支,当俩个分支内容不一样,必须提交修改后,才能进行切换

git log --oneline --decorate --graph --all:查看分支结构

git merge BranchName:将BranchName合并到到当前分支

git branch -d 分支名字:删除分支

常见错误提示及解决方法

1、没有将本地库添加到分支中。提示如图:

$ git push -u origin1 master
error: src refspec master does not match any.
error: failed to push some refs to '//github.com/w-x-me/C-Code.git'

解决方法:$ git commit -m"Demon"            输入次命令,添加分支说明

2、push前未同步远程仓库,提示如图:

解决方法:先执行pull,     git pull origin

1、pull时进入编辑目录解决方法

Esc---->ctrl+x--->按提示输入Y,退出之后在push

2、pull时错误提示,未见分支合并

执行命令:git merge --abort

                  git reset --merge                   //将分支合并

git patch的运用

生成patch文件:git format-patch 版本 --stdout > 生成的patch文件  例:git forma-patch HEAD^ --stdout > my.patch

查看patch文件情况:git apply --stat patch文件名   例:git apply --stat my.patch

查看patch能否运用:git apply --check patch文件名   例:git apply --check my.patch

在运用前,确定代码commit了

运用patch:git am --signoff < patch文件名  例:git am --signoff < my.patch

执行异常:git am --abort

git中branch/commit/add之间关系

1、创建分支后,在分支中修改代码,而未commit,进行branch操作,

例如存在分支为:1和

分支内容一样:1、2分支内容都被修改,原有的分支内容被覆盖。如果对1进行comit的就是,2就会回到最初始的版本。文学23

分支内容不一样:分支切换失败

Windows下Git的使用

1、安装Git Bash
2、双击Git Bash工具,配置GitHub相关信息,方便抓取code
    git config --global user.name '用户名'
    git config --global user.email '邮箱'
3、在根目录创建.ssh文件夹(如果存在可以不创建),进入.ssh文件夹,执行
    ssh-keygen -t rsa -C '邮箱'
    创建对应的私钥,方便后期抓取code。
4、在C盘找到对用的.ssh/id_rsa.pub 文件内容
5、打开 git 网站,右上角用户头像,点击 settings,左侧菜单 SSH KEYS,将文件内容复制到 key 里 添加就可以了
参考:Windows Git Bash配置SSH
           Linux下配置SSH

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

接口优化技巧汇总

1.批处理 批量思想&#xff1a;批量操作数据库&#xff0c;这个很好理解&#xff0c;我们在循环插入场景的接口中&#xff0c;可以在批处理执行完成后一次性插入或更新数据库&#xff0c;避免多次IO。 //批量入库 batchInsert();2.异步处理 异步思想&#xff1a;针对耗时比较…

Nacos-04-@RefreshScope自动刷新原理

Nacos动态刷新原理 Nacos做配置中心的时候&#xff0c;配置数据的交互模式是有服务端push推送的&#xff0c;还是客户端pull拉取的&#xff1f; 短轮询 不管服务端的配置是否发生变化&#xff0c;不停发起请求去获取配置&#xff0c;比如支付订单场景中前端JS不断轮询订单支…

mathtype公式符号显示不对

文章目录 问题解决方法结果 记录攥写论文遇到的问题及解决方法 问题 使用mathtype编辑公式过后&#xff0c;发现公式显示不对&#xff0c;出现两种问题&#xff1a; 1&#xff1a;部分符号变为方框 2&#xff1a;符号大小异常 例如&#xff1a; 解决方法 第一种&#xff1a…

【Linux 之五】 Linux中使用fdisk命令实现磁盘分区

最近由于工作的需要&#xff0c;初步研究了uboot中的fastboot实现方式。研究fastboot不可避免的需要了解磁盘分区的相关知识点&#xff0c;在linux下可以使用fdisk命令实现磁盘的分区。好了&#xff0c;下面步入正题。 1. 查看帮助信息&#xff08;fdisk --help&#xff09; …

我们详细讲讲UI自动化测试最佳设计模式POM

概念 什么是POM&#xff1f; POM是PageObjectModule&#xff08;页面对象模式&#xff09;的缩写&#xff0c;其目的是为了Web UI测试创建对象库。 在这种模式下&#xff0c;应用涉及的每一个页面应该定义为一个单独的类&#xff0c;类中应该包含此页面上的页面元素对象和处…

skywalking安全认证问题

skywalking安全认证 一、问题二、步骤2.1 skywalking-aop配置文件修改2.2 agent配置文件修改 一、问题 在springboot项目使用java-agent接入skywalking时&#xff0c;为保证两者之间的数据安全传输&#xff0c;准备加个安全认证 参考文章&#xff1a; https://www.helloworld…

亚马逊云科技使用Inf2实例运行GPT-J-6B模型

在2019年的亚马逊云科技re:Invent上&#xff0c;亚马逊云科技发布了Inferentia芯片和Inf1实例这两个基础设施。Inferentia是一种高性能机器学习推理芯片&#xff0c;由亚马逊云科技定制设计&#xff0c;其目的是提供具有成本效益的大规模低延迟预测。时隔四年&#xff0c;2023年…

java版企业电子招投标系统源码 招采系统源码 spring boot+mybatis+前后端分离实现电子招投标系统

spring bootmybatis前后端分离实现电子招投标系统 电子招投标系统解决方案 招标面向的对象为供应商库中所有符合招标要求的供应商&#xff0c;当库中的供应商有一定积累的时候&#xff0c;会节省大量引入新供应商的时间。系统自动从供应商库中筛选符合招标要求的供应商&#x…

【Mybatis】SpringBoot整合Mybatis

唠嗑部分 之前我们说了Mybatis的一些文章&#xff0c;相关文章&#xff1a; 【Mybatis】简单入门及工具类封装-一 【Mybatis】如何实现ORM映射-二 【Mybatis】Mybatis的动态SQL、缓存机制-三 【Mybatis】Mybatis处理一对多、多对多关系映射-四 这篇文章我们来说说SpringBoot如…

SpringCloud学习-实用篇03

以下内容的代码可见&#xff1a;SpringCloud_learn/day03 1.初识Docker 什么是Docker? 项目部署问题&#xff1a;大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题 依赖关系复杂&#xff0c;容易出现兼容性问题开发、测试、生产环境有差异 Do…

ADS - lesson 1. Patch antenna

Patch antenna 1. 开启 layout command line editor2. layout command line editor应用3. 画馈线4. 插入端口5. EM 冲冲冲6. 结果 1. 开启 layout command line editor ADS主界面 - Tools - App Manager… - 勾选 “layout command line editor” 然后重启软件 2. layout co…

一步一步详解LSTM网络【从RNN到LSTM到GRU等,直至attention】

一步一步详解LSTM网络【从RNN到LSTM到GRU等&#xff0c;直至attention】 0、前言1、Recurrent Neural Networks循环神经网络2、The Problem of Long-Term Dependencies长期依赖的问题3、LSTM Networks4、The Core Idea Behind LSTMs5、Step-by-Step LSTM Walk Through6、Varian…

微信小程序原生开发功能合集十五:个人主页功能实现

本章个人主页功能实现,展示当前登录用户信息、个人主页、修改密码、浏览记录、我的收藏、常见问题、意见反馈、关于我们等界面及对应功能实现。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如…

(1分钟速览)g2o入门指南--笔记版

在slam后端中&#xff0c;优化的框架很多&#xff0c;有ceres&#xff0c;g2o&#xff0c;gtsam这些。要想真正掌握slam后端的优化内容&#xff0c;这些框架是必不可少的上手练习的内容。本文则介绍有关g2o的相关内容&#xff0c;作为一个入门指南&#xff0c;目标&#xff1a;…

Python 学习 2022.08.28 周日

文章目录 一、 概述1.1&#xff09; 之前写的文章&#xff1a;1.2) 基础点1.3) 配置1.4) Python2 和 Python3 的区别1.5&#xff09; 相关问题跟踪解决1.6) 其他 一、 概述 1.1&#xff09; 之前写的文章&#xff1a; 【Python大系】Python快速教程《Python 数据库 GUI CGI编…

怎么取消只读模式?硬盘进入只读模式怎么办?

案例&#xff1a;电脑磁盘数据不能修改怎么办&#xff1f; 【今天工作的时候&#xff0c;我想把最近的更新的资料同步到电脑上的工作磁盘&#xff0c;但是发现我无法进行此操作&#xff0c;也不能对磁盘里的数据进行改动。有没有小伙伴知道这是怎么一回事&#xff1f;】 在使…

无线充+台灯专用PD诱骗芯片LDR6328S

近几年&#xff0c;日常生活中到处可以看到消费者使用支持Type-c接口的电子产品&#xff0c;如手机&#xff0c;笔记本&#xff0c;筋膜枪&#xff0c;蓝牙音箱等等。例如&#xff0c;像筋膜枪&#xff0c;蓝牙音箱&#xff0c;无人机&#xff0c;小风扇。 无线充台灯方案&…

容器安装Datax+Datax-web2.1(一)

目录 简介1、安装Datax-web2.1.11&#xff09;安装docker-compose2&#xff09;创建Datax-web和MySQL容器 2、安装Datax-web2.1.21&#xff09;安装MySQL2&#xff09;初始化数据3&#xff09;安装datax和datax-web4&#xff09;浏览器登录 DataxDatax-web2.1实现MySQL数据库数…

如何通过SOLIDWORKS driveworksxpress初步实现参数化设计

当提到参数化设计&#xff0c;我们首先需要了解究竟什么是参数化设计&#xff0c;它是指从一个系统的角度&#xff0c;计划所有的设计过程&#xff0c;在整个系统中建立组件、次组件和子零件之间的关系&#xff0c;在最上层的部分建立设计意图&#xff0c;并将其往较下层的部分…

RK3588光电载荷处理板研制进展

本来就是一个很小众的市场&#xff0c;但是偶尔也会有同行询问&#xff0c;这儿就简单汇报一下后期的进展 板子已经开发完成&#xff0c;并有幸得到了两个订单&#xff0c;虽然量不是很大&#xff0c;但是也很开心由于一段时间的努力和付出&#xff0c;将该设备应用在了国防事业…