git(一) 基础必备

Git系列(一)、Git基础教程【建议收藏】 Git一、Git简介1.1、什么是Git? 一、Git简介 1.1、什么是Git? Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。 Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源代码的版本控制软件。 Git与常用的版本控制工具CVS、Subversion等不同,它采用了分布式版本库的方式,不用服务器端软件支持。 ......... 阅读详情

git是开源的分布式文件管理系统

为什么说是分布式呢?简单来说就是除了集中式版本库,在各个开发本地也保存一份版本库。
这样带来了很多的优点,近乎所有操作都是本地执行,因此速度相当的快,也可以在离线时进行操作。

在Git的基础上衍生出GitHub和GitLab这两个非常流行的代码托管平台,很多公司包括阿里云、去哪儿、携程等都在GitLab平台的基础上做自己的二次开发。

https://git-scm.com/book/zh/v2为pro git的中文地址,讲解的非常好。
http://gitready.com/也是一个不错的git网站,针对常用场景写了很多短小但很优秀的博客。

Git的存储方式
       Git 更像是把数据看作是对小型文件系统的一系列快照。 在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。 为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。
       每次提交,会生成一个commit对象指向一个tree对象(提交时所有文件的一个快照);tree按文件夹的结构来排列,每个文件夹又是一个tree,每个文件指向一个blob对象。注意blob对象和文件并不完全等价,Git认为即使文件名不同只要文件内容相同就是同一个blob,这样节省了存储空间。
       Git 中所有的数据在存储前都计算校验和,即 SHA-1 散列(hash,哈希), 这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,基于 Git 中文件的内容或目录结构计算出来,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。

在这里插入图片描述

git配置

git安装方式
git --version 查看版本
git config --global user.name yushengjun 设置全局用户名
git config --global user.email xxx@163.com 设置全局邮箱
git config --global --list 查看global下git的所有配置

git config --global color.ui auto 让命令更具可读性
git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin" 设置git的默认文本编辑器,这个还是挺有用的,毕竟命令行的编辑不好用

git常用操作

在这里插入图片描述
图中index是按照git的术语称为索引,但是一般还是叫暂存区,staging,用来存储下次要commit的文件。

1. 获取或创建git仓库

  • 在本地目录初始化 Git 仓库
    git init把已有的项目代码纳入Git管理。git init your_project 会在当前路径下创建和项目名称同名的文件夹
  • 从其它服务器克隆已存在的仓库
    git clone https://github.com/libgit2/libgit2 http、https、ssh都是使用的智能协议。

2.提交

git add readme.txt
git commit readme.txt -m '提交readme文件'
git status
git status -s 

git add 这是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。 将这个命令理解为“精确地将内容添加到下一次提交中”而不是“将一个文件添加到项目中”要更加合适。

git status 用来查看文件的状态。
在 Changes not staged for commit 这行下面,说明已跟踪文件的内容发生了变化,但还没有放到暂存区;
在 Changes to be committed 这行下面的,就说明是已暂存状态,还没提交到本地仓库
Untracked files 下面是没有被跟踪的文件。
使用 git status -s 命令,你将得到一种格式更为紧凑的输出, 输出中有两栏,左栏指明了暂存区的状态,右栏指明了工作区的状态。

3.比较工作区、暂存区、本地仓库之间的差异

git diff 是比较工作区和暂存区之间的差异,亦可以比较要指定的文件
git diff --cached 比较暂存区和本地仓库之间的差异(因此文件必须先加到暂存区)
git diff temp master -- 1.txt 比较1.txt这个文件temp分支和master分支最新一次提交之间的差异。其实这里分支也指向提交,所以我们也可以比较不同commit之间的差异(换成commit的唯一标识值即可)。
git diff HEAD HEAD~2 -- 1.txt 比较1.txt和前两次提交时的不同

4.移除文件

删除文件git rm ,然后提交即可。 如果要删除之前修改过或已经放到暂存区的文件,则必须使用强制删除选项 -f

当你忘记添加 .gitignore 文件,不小心把一个很大的日志文件添加到暂存区时
git rm --cached README把文件从 Git 仓库中删除(也从暂存区域移除),但仍然保留在当前工作目录中

git mv file_from file_to 重命名文件

5.查看提交日志

git log 查看本地提交历史
git log --oneline --all -n4 --graph --decorate oneline简略显示提交历史,all查看所有分支 ,n4最近4次的提交历史 graph 图形化查看
gitk 打开图形化工具,推荐使用sourceTree或idea自带的
git log -S function_name 可以显示那些添加或删除了该方法的提交。
git log -p file 可以查看指定文件每次提交前后的修改内容。还可以指定目录查看指定目录下的提交历史

git log其实提供了非常丰富的日志查询参数,一下是记不住的,用到时积极查阅,才能得心应手。

下面是要在 Git 源码库中查看 Junio Hamano 在 2008 年 10 月其间, 除了合并提交之外的哪一个提交修改了测试文件,可以使用下面的命令:

$ git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01" \
   --before="2008-11-01" --no-merges -- t/
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

6.撤销操作

我们有时想回退版本,怎么办呢?可以使用reset命令,来移动head指针,变更本地仓库的版本。
这里有三个参数,–soft --hard --mixed

  • git reset <commitId> --soft -- 2.txt 1.txt 变更本地仓库版本。工作区和暂存区不做变动
  • git reset <commitId> -- 2.txt 1.txt 变更本地仓库版本和暂存区,不变更工作区。不加参数就是默认mixed
  • git reset <commitId> --hard -- 2.txt 1.txt 变更本地仓库版本、暂存区和工作区。(注意这个命令十分危险,会丢失你在工作区做的变更!!)

commitId指的是某次提交记录,使用git reflog 查看所有提交历史,可以方便的查找提交记录进行版本的回退和前进。

将commitId换成head,可以实现另一些常用的功能:

  • 我们有时取消刚暂存的文件,怎么办呢?
    git reset head -- 2.txt 1.txt 把2.txt和1.txt恢复成head,也可以不指定文件即复原所有文件

  • 如果想暂存区和工作区都恢复成最新一次提交的内容该怎么办呢?
    git reset --hard HEAD 将暂存区和工作区都恢复成最新一次提交的内容。 回退到上上个版本 git reset --hard HEAD^^,直到HEAD~100。(注意这个命令十分危险,会丢失你在工作区做的变更!!)

  • 如果我们想恢复工作区的内容和暂存区一样,怎么操作呢?使用checkout
    git checkout -- 3.txt 丢弃工作区的修改,恢复和暂存区一样。(注意这个命令比较危险,会丢失你在工作区做的变更!!)

记住,在 Git 中任何已提交的东西几乎总是可以恢复的。 甚至那些被删除的分支中的提交或使用 --amend 选项覆盖的提交也可以恢复 (数据恢复)。 然而,任何你未提交的东西丢失后很可能再也找不到了。

7.远程仓库的使用

git remote <-v> 查看本地配置的远程仓库信息
git remote show <remote> 查看某一个远程仓库的更多信息

git remote add origin git@github.com:xxx/git_test.git 在本地添加远程仓库,并指定缩写origin来指代远程仓库,git clone默认是origin
git fetch <remote> 将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作
git pull 自动抓取后合并该远程分支到当前分支
git push <remote> <branch> 推送到远程服务器

8. 分支的管理

git里的分支非常简单,其实就是创建个指针指向提交对象,head也是个指针指向当前分支。创建、切换、合并、删除分支都是很常见的操作。

  1. 创建、切换分支
    git branch testing 创建分支
    git checkout testing 切换分支,注意切换的时候要保证本地的修改已经提交或stash,不然会切换失败,这是git为了防止丢失你当前工作区的修改
    git checkout -b testing 创建分支并切换过去,相当于上面两个命令的合并

    git log --oneline --decorate --graph --all 查看当前分支情况

    git merge testing 把testing的修改合并到当前分支,如果没有分叉就是快进(fast-forward)。如果有分叉且冲突了需要解决冲突,git add 表示冲突已解决,准备提交了,要记得提交!

  2. 删除分支
    git branch -d hotfix 删除分支,如果hotfix分支的代码已经合并到该分支,会成功删除。否则会删除失败,强制删除使用-D,这也是git为了防止你丢失hotfix的修改
    git branch --merged 查看已经合并到当前分支的分支。此命令下没有*号的分支都是可以删除的,因为修改已经合并到当前分支,不会丢失任何东西
    git branch --no-merged 查看有修改还没合并到当前分支的分支信息。这是-d删除分支就会失败

  3. 远程分支
    git branch <-vv> 查看分支信息,和当前所处分支
    git fetch origin --all 获取远程仓库的信息
    git push <remote> <branch> 把本地新创建的分支推送到远程服务器上
    git checkout -b serverfix origin/serverfix 从远程服务器上拉取serverfix 分支到本地 ,这个命令很常用,所以有快捷方式git checkout --track origin/serverfix,甚至git checkout serverfix即可
    git branch -u origin/serverfix 让本地分支跟踪远程分支
    git push origin --delete serverfix 删除远程分支

9. 标签

git tag 列出标签
git tag --list '*1.0' 搜索1.0结尾的标签
git show v1.4 可以查看这个标签的信息

Git 支持两种标签:
轻量标签(lightweight)很像一个不会改变的分支——它只是某个特定提交的引用。
附注标签(annotated) 是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG)签名并验证。 通常会建议创建附注标签,这样你可以拥有以上所有信息。
git tag -a v1.4 -m "my version 1.4" 附注标签必须带上-a ,而且必须输入一条备注信息。轻量标签直接git tag v1.0即可
git tag -a v1.2 9fceb02 在之前的某次提前打上标签
git push origin <tagname> 默认情况下,git push 命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上

掌握Git必备:最常用的50个Git命令 本文列举了 Git 中最常用的 50个命令及其解释,希望能帮助读者掌握 Git 的基本操作并提升团队协作效率。Git 是一个强大而灵活的工具,熟练掌握它将成为您编程生涯的利器。欢迎大家留言分享自己常用的 Git 命令和经验,共同学习进步! 阅读详情

相关推荐

电路课设-音响分频器电路设计

(一)题目简介 1.一阶分频器电路设计 假定高音和低音扬声器均等效为 16 欧姆电阻,设计如图 2 的简单分频器电 路,要求高低频分界(两个滤波器的截止频率)为 5kHz。 1) 写出高音扬声器和低音扬声器电压对于 vs 的传递函数,确定电路中电 容 C 和电感 L 的元件值;2)利用 AC 频率扫描分析求出两个扬声器电压的频率响应曲线,验证计算 结果。用包含高低频成分的电压 vs 激励进行测量验证。 3)计算并利用 EWB 仿真证明从 vs 看进去的阻抗为一常数 16 欧姆。

weixin_53507617的博客 1万+

Git 必备基础

文章目录获取Git仓库在已存在目录中初始化仓库克隆现有的仓库记录每次更新到仓库检测当前文件状态跟踪新文件 获取Git仓库 目前有两种获取Git仓库的方式: 将尚未进行版本控制的本地目录转化为GIt仓库 从其他服务器克隆一个已经存在的Git仓库 在已存在目录中初始化仓库 这部分的操作在不同的操作系统中有不同的初始化仓库的做法: 在linux, windows上面的都是用的以下命令: $cd home/user/my_proj $git init 该命令将创建一个名为 .git 的子目录,这个子目录含

Miller_em的博客 295

告别TI官网迷路!手把手教你用C2000Ware为TMS320F28027搭建Proteus仿真工程模板

本文详细指导如何使用C2000Ware为TMS320F28027搭建Proteus仿真工程模板,帮助DSP开发者快速上手。从资源获取、工程目录设计到关键文件配置,再到CCS与Proteus的联调技巧,全面解析仿真工程搭建的每个步骤,特别适合初学者和工程师参考。

weixin_42715608的博客 474

git 项目管理常用操作流程

用git管理项目的好处我在这里就不再描述了,以我多年的开发经验,总结了一下常规的git项目管理流程如下: 初次创建项目常用操作流程 在github上创建项目,可参考《GitHub项目管理基本操作》 clone项目到本地(git clone https://github.com/loushengyue/hello-world.git) 编辑内容(在克隆下来的文件夹hello-world内创建或者粘...

loushengyue 5186

SAP 物料的分割评估

SAP 物料的分割评估 前言 本文主要讲解SAP中物料的分割评估,通过分割评估来区分出同一物料不同来源下的核算方式。例如:同一物料分为自产或者采购,或者同一物料分为进口或者国内采购等。 一、概述 分割评估一般用于以下场景: 1、物料分为内部采购和外部采购; 2、物料分属于进口或者国内采购; 3、物料分属于不同的批次; 4、物料分为自制或者采购。 由于物料的来源不同可能导致物料的价格或者性质不同,需要用不同价格来区分出 二、配置步骤 1.激活分割评估 ...

五谷散熊 6792

海思ISP调优实战:从实验室到真实场景的IPC相机图像质量优化指南

本文深入探讨海思ISP调优在IPC相机图像质量优化中的实战应用,从实验室标定到真实场景部署的全链路调优方法。重点解决光照动态范围、色温变化和噪声特性等核心问题,提供AE权重表配置、CCM标定、3DNR时域滤波等关键技术方案,帮助实现从理论到实践的图像质量提升。

s3t4u的博客 751

【基础技能必备】| 学会使用Git版本控制系统及代码托管平台Github、Gitee(一)

你将了解到,可行的Git和Github学习途径,Git、Github、Gitlab、Gitee四者之间的区别和联系,Git的入门安装推荐,Git仓库的首次入门配置。

优快云_SykerFney的博客 1310

Maltab GUI课程设计——网络爬虫程序(基金连涨连跌提醒)

Maltab GUI课程设计——网络爬虫程序(基金连涨连跌提醒)

果果爱腰果的博客 851

【零基础入门 Git 全流程:从安装到远程仓库的保姆级教程】

作为一名刚接触编程的小白,你是否曾被 "提交代码"" 拉取更新 ""解决冲突" 这些词汇搞得一头雾水?Git 作为目前最流行的版本控制工具,是每个开发者必备的技能。本文将以最通俗的语言,带你从零开始掌握 Git 的核心操作,全程文字引导 + 代码示例,保证零基础也能看懂!分类命令作用示例基础配置配置全局用户名(标识提交作者)git config --global user.name "张三"配置全局邮箱(建议与远程账号一致)本地操作git init初始化本地 Git 仓库git init。

2301_81781871的博客 1217

addr2line解析不出来行号的解决方式(汇编解析高阶版)

摘要:本文针对AEC crash问题中addr2line无法解析行号的情况,通过llvm-addr2line和反汇编分析,定位到CamX::AECBEStats17::AdjustROIParams函数中的乘法溢出问题。关键发现包括: 常规addr2line只能解析到函数名但无具体行号 llvm-addr2line解析出多个可能溢出点(行196/204/211/218/270/271) 反汇编显示6个条件分支跳转到溢出处理函数 源码分析确认这些位置均存在乘法运算 最终通过汇编级调试工具成功定位UBsan报告

170

Python 爬虫实战:爬取哔哩哔哩知识区,抓取高赞课程信息

哔哩哔哩(Bilibili)是一个广受欢迎的综合性视频社区,其中的知识区汇聚了大量优质的教育、科普、技术等课程内容。本文将指导读者如何使用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息,并进行数据分析。本文深入探究了利用 Python 爬虫技术从哔哩哔哩知识区抓取高赞课程信息的全流程。从前期的环境搭建、模拟登录,到核心的课程数据抓取、存储,再到后续的数据分析与可视化,都详细展开讲解并提供代码支持。通过此方法所获取的数据,能够助力创作者优化内容、用户发现优质课程、平台洞察用户需求。

u014481728的博客 1137

【最强版本控制软件】一小时学完程序员的基本功--Git,这个老师真的太强了!

一小时学完,强推老杨的Git教学!!

qq_74440988的博客 774

算法真的是个很有用的东西,通过python或者golang实现对N张图片的自动排版,每张图片的长和宽都不一样,有的是横图,有的是竖图,最终需要生成一张完整的矩形图片

算法真的是个很有用的东西,通过python或者golang实现对N张图片的自动排版,每张图片的长和宽都不一样,有的是横图,有的是竖图,最终需要生成一张完整的矩形图片。

代码讲故事 503

程序员必备基础:Git 命令全方位学习

前言 掌握Git命令是每位程序员必备的基础,之前一直是用smartGit工具,直到看到大佬们都是在用Git命令操作的,回想一下,发现有些Git命令我都忘记了,于是写了这篇博文,复习一下~ https://github.com/whx123/JavaHome 公众号:捡田螺的小男孩 文章目录 Git是什么? Git的相关理论基础 日常开发中,Git的基本常用命令 Git进阶之分支处理 Git进阶之处理冲突 Git进阶之撤销与回退 Git进阶之标签tag Git其他一些经典命令 Git是什么 在回忆Gi

weiwenhou的博客 3万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【Git】全面详细了解开发者必备工具Git(2.0)

Git是一个开源的分布式版本控制系统,是目前世界上最先进,最流行的版本控制系统。可以快速高效地处理从很小到非常大的项目版本管理。特点:项目越大越复杂,协同开发者越多,越能体现出Git的高性能和高可用性。

m0_62360527的博客 2812

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

必备技能——Git

文章主要介绍了 Git 这一分布式版本控制工具,包括其在协同开发中的作用、工作流程、操作命令、基本配置等。详细阐述了集中式和分布式版本控制的特点,Git 的分支相关内容,如创建、切换、合并、删除,以及本地冲突的解决办法和分支使用原则与流程。还提到了 Git 的本地仓库,指出其存在本地和远程两种仓库类型。

Aishangyuwen的博客 1838

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

git基础

Git是一个开源的分布式版本控制工具(VCS)

一位大侠 698

【Git】一、Git基础入门

Git学习1. Git学习1.1 安装Git1.2 启动Git1.2.1 Git配置 1. Git学习 视频地址:https://www.bilibili.com/video/BV1FE411P7B3?p=6&spm_id_from=pageDriver 文档地址:https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ 1.1 安装Git Git官网:https://git-scm.com/ 下载很慢的话可以通过淘宝镜像下载:http://npm.tao

学习记录 571

12个程序员必知必备的Git命令

介绍Java开发人员必备的12个Git命令示例。

u013643074的博客 1282

Git基础(一)——Git

Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。

Mr_John 846

Git入门指南(一):从零开始,掌握Git基础操作

Git是一款分布式版本控制系统,专为解决文件版本管理混乱问题而设计。它能精确记录文本文件的每次修改,支持版本回溯、多人协作等功能。安装简单,支持Linux/Windows等多平台,通过git init初始化仓库后,文件修改需经工作区→暂存区→版本库的规范流程。核心操作包括git add添加文件、git commit提交版本,配合git log可查看完整修改历史。Git通过.git目录存储所有版本数据,是开发者管理代码版本的必备工具。

原来是猿的成长足迹 1186

程序员必备工具篇 / 程序员必备基础:Git

掌握 Git 命令是每位程序员必备的基础,之前一直是用 smartGit 工具,直到看到大佬们都是在用 Git 命令操作的,回想一下,发现有些 Git 命令我都忘记了,于是写了这篇博文,复习一下~顺哥轻创文章目录Git 是什么?Git 的相关理论基础日常开发中,Git 的基本常用命令Git 进阶之分支处理Git 进阶之处理冲突Git 进阶之撤销与回退Git 进阶之标签 tagGit 其他一些经典命令百度百科定义是酱紫的~

908

【Git】(基础篇一)—— Git理论知识

本文介绍了git的理论基础知识,后续将进行实际的操作,希望你可以跟上我的节奏,在实践中熟悉git的使用。

麦田里的稻草人的博客 1263

git的基础使用,小白进公司必备

git的入门及操作1.git是什么2.git使用2.1.我们使用git的什么3.git的操作3.1git使用-----请配置git的环境3.2建立仓库--你需要你个放代码的仓库3.3远程仓库和本地建立联系3.4提交代码3.5拉取远程代码[ 进公司第一步] 1.git是什么 git 就是一个云上的平台 可以把你写的代码发布到云端 进行管理和协作 案例: 想想一下 团队开发 各自写各自的代码 那么如何统一收集我们的代码呢 将代码放到一起嘞 1.进行文件发送 2.U盘传输 …无论下载还是 上传是不是都很

preserveXing的博客 808

【唐叔带你玩转Git】这些Git命令你不会还不知道吧?老司机必备!

作为程序员,Git是咱们吃饭的家伙事儿。今天唐叔就给大家掰扯掰扯那些日常开发中高频使用的Git命令,让你从Git小白秒变老司机!不管是团队协作还是个人项目,掌握这些命令都能让你游刃有余~

唐叔学习中... 789
上一篇: 最实用的logback讲解(2)—appender
下一篇: github的基础使用
余生之君
博客等级 码龄10年 246粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值