【git指南--命令大全】

news2024/12/24 21:24:36

我看好多文章命令都记录得比较发散不够全面,这里还是把我自己的笔记分享出来,方便查阅。

文章目录

    • 1. git config
      • 作用域
      • --list 显示当前所有配置
      • 配置
      • cd ~/.ssh
    • 2. 初始化 git 仓库
      • 1、把已有项目代码纳入 git 管理
      • 2、新建的项目直接用git 管理
      • 3、克隆仓库
    • 3. git add
    • 4. git commit
    • 5. git mv
    • 6. git log
    • 7. git branch
    • 8. git diff
    • 9. git reset
    • 10. git checkout
    • 11. git rm
    • 12. git stash
    • 13. git ignore
    • 14. git remote
      • 查看关联的远程仓库信息
      • 添加远程仓库的关联
      • 删除远程仓库的关联
      • 修改远程仓库的关联
    • 15. git fetch
    • 17. git merge
    • 18. git pull
    • 19. 冲突
      • step 1 : git status
      • step 2 : 冲突显示
      • step 3 : git add
      • step 4 : git commit
    • 20 .git tag
    • 21. git push
      • 向远端push可能失败的原因
    • 22. git rerere
    • 23. git 传输协议
    • 24. 流程
    • 25. 分离头指针 detached HEAD
    • 26. commit 、tree、blob关系
  • github

1. git config

作用域

  • git config --local
    • 只对某个仓库有效(需在仓库目录下操作)
  • git config --global
    • 对当前用户所有仓库有效
  • git config --system
    • 对系统用户所有登录用户有效(基本不用)

–list 显示当前所有配置

  • git config --local --list
  • git config --global --list
  • git config --system --list

配置

格式:git config --<作用域> [参数] [值]

  • 配置全局作用域的用户名
    • git config --global user.name ‘isymikasan’

cd ~/.ssh

查看本机公私钥

2. 初始化 git 仓库

1、把已有项目代码纳入 git 管理

  • $ cd 项目代码所在文件夹

  • $ git init

2、新建的项目直接用git 管理

  • $ cd 某个文件夹
  • $ git init you_project
    • 会在当前路径下创建和项目名称同名的文件夹
  • $ cd you_project

3、克隆仓库

  • git clone [ssh地址] [http地址]

3. git add

添加文件至暂存区

  • git add .
    • 添加工作目录全部变更至暂存区
  • git add -u
    • 添加工作目录全部修改至暂存区

4. git commit

提交暂存区文件至版本历史

  • git commit -m ‘提交注释’

5. git mv

变更暂存区文件名

  • git mv 源文件名 目标文件名
    • git mv readme readme.md

6. git log

  • git log --oneline
    • 一行简洁查看
  • git log --oneline --all
    • 一行简洁查看所有分支
  • git log --n*
    • git log —oneline --n4 :一行简洁查看最近4条log
    • git log --n4 :查看最近4条
  • git log --graph :图形化版本演进历史
  • git log 分支
    • git log master :查看master分支log

7. git branch

  • git branch

    • 列出所有本地分支
  • git branch -r

    • 列出所有远程分支
  • git branch -a

    • 列出所有本地分支和远程分支
  • git branch -av

    • 列出所有本地分支和远程分支 并加上commitid
  • git branch [branch-name]

    • 新建一个分支,但依然停留在当前分支
  • git checkout -b [branch]

    • 新建一个分支,并切换到该分支
  • git branch [branch] [commit]

    • 新建一个分支,指向指定commit
  • git branch -d [branch]

    • 删除安全的分支

8. git diff

查看文件差异

  • git diff
    • 工作区与暂存区的差别
    • git diff – [文件名]…
      • 某一文件工作区与暂存区的差别
  • git diff --cached
    • 比较暂存区跟HEAD指向分支的最新提交之间的区别
  • git diff [commit Id] [commit id2]
    • 比较两次提交的差异
    • git diff [commit Id] [commit id2] – [文件名]
      • 比较两次提交指定文件的差异
  • git diff [分支1] [分支2]
    • 比较两个分支不同差异
    • git diff [分支1] [分支2] – [文件名]
      • 比较两个不同分支指定文件差异

9. git reset

变更暂存区文件(回滚)

  • git reset HEAD
    • 恢复暂存区为 当前HEAD指向分支的最近一次提交(删除当前暂存区所有内容)
  • git reset HEAD – [文件名]
    • 恢复暂存区指定文件为 当前HEAD指向分支的最近一次提交的文件
  • git reset --hard [commit Id] (慎用!)
    • 清除指定提交前的所有提交,将所有文件恢复为指定提交时的内容

10. git checkout

变更工作区文件

  • git checkout – [文件名]
    • 将工作区文件恢复为暂存区文件
  • git checkout [分支名]
    • 切换分支为指定分支
  • git checkout -b [本地分支] [远程分支]
    • 基于远程分支在本地新建分支,并自动切换到该分支

11. git rm

删除文件

  • git rm [文件名]
    • 将工作区文件删除同时暂存区也删除

12. git stash

  • git stash
    • 将工作区的修改临时存放起来
  • git stash apply
    • 将stash存放的文件拷贝出来给当前工作区
  • git stash pop
    • 将stash里的文件移除到当前工作区

13. git ignore

  • 在仓库目录创建 .gitignore 文件并添加指定文件名或文件夹
    • vi .gitignore

各种语言项目中不需要被git管控的文件:https://github.com/github/gitignore

14. git remote

查看关联的远程仓库信息

  • git remote
    • 查看关联的远程仓库的名称
  • git remote -v
    • 查看关联的远程仓库的详细信息

添加远程仓库的关联

远程仓库的名称一般默认为 origin (远程仓库的名称推荐使用默认的名称 origin ),当然,你可以设置为其他的名称。

在 add 后➕ 自定义远程仓库名字

  • git remote add origin [远程仓库url]/[本地仓库路径]
    • git_url 为你的远程仓库的 url,可采用 http 协议或 ssh(git) 协议

删除远程仓库的关联

  • git remote remove [name]

修改远程仓库的关联

比如,之前你关联的远程仓库使用的协议是 http ,你想将关联的远程仓库的 url 改为 ssh 协议的。

  • git remote set-url [自定义远程仓库名/origin] [newurl]

15. git fetch

将远程仓库最新分支跟本地的远程仓库做一个同步

  • git fetch <远程主机名>
    • 这个命令将某个远程主机的更新全部取回本地
  • git fetch <远程主机名> <分支名>
    • 将指定远程分支更新取回本地

17. git merge

  • git merge 命令
    • branch为需要合并到当前分支的目标分支名称

18. git pull

  • git pull <远程主机名> <远程分支名>:<本地分支名>
    • 将远程主机的某个分支的更新取回,并与本地指定的分支合并
  • git pull <远程主机名> <远程分支名>
    • 远程分支与当前分支合并

19. 冲突

将要合并的两个分支都修改了同一个而文件的同一个部分内容,Git就无法确定应该使用哪个版本的内容。

当这种情况发生时,合并过程会停止在合并commit提交之前,以便给用户留下机会手动修复这些冲突。

step 1 : git status

列出哪些文件含有冲突并需要手动解决

step 2 : 冲突显示

当Git在合并过程中碰到了冲突,它会编辑受影响的文件中的相关内容,并添加视觉标记用以展示冲突中双方在此部分的不同内容

视觉标记为:<<<<<<<,=======,>>>>>>>

找到冲突发生的具体位置,例如

here is some content not affected by the conflict
<<<<<<< main
this is conflicted text from main
=======
this is conflicted text from feature branch
>>>>>>> feature branch;
  • ====== 标记之前的内容是 接收合并的分支(当前分支)
  • ====== 标记之后的内容来 要合并的分支(拉取下来要合并的分支)

完成了冲突的修复并准备好继续进行合并(删除不想要的和git添加的标识符)

step 3 : git add

只需要执行git add命令把已经解决好冲突的文件添加暂存区,告诉Git这些冲突已经解决完毕

step 4 : git commit

完成合并commit

20 .git tag

  • git tag [标签]
    • 打标签命令,默认为HEAD
  • git tag
    • 显示所有标签
  • git tag [标签] [版本号]
    • 给某个commit版本添加标签
  • git show [标签]
    • 显示某个标签的详细信息

21. git push

  • git push [远程主机名] [远程分支名]
    • 将当前分支推送到远程分支

向远端push可能失败的原因

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p2YkTMU4-1686376953840)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230212103857549.png)]

  • 上图本地分支 feature/add_git_command 是基于远程分支 feature/add_git_command 创建出来的,此时他们的hash值都是 13d4cf1 说明本地分支与远程分支是一致的

  • 当我们在修改文件时 ,其他用户向该远程分支提交并推送了

  • 此时修改文件后 出现 fast-forwards在这里插入图片描述

  • git branch -av 检查本地远程分支与 远程仓库该分支的hash值

    • 本地[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GVTnizz3-1686376953841)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230212104728213.png)]

    • 远程仓库

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YoiMAs0N-1686376953842)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230212104903396.png)]

这是因为git存储底层每一次提交都会生成一次快照树

  • 此时将最新的远程仓库同步到本地远程分支git fetch(**git存储的文件是根据内容进行判断是否是同一个文件的,因此同步远程仓库可以让本地的远程分支更远程仓库的hash值保持一致 **)

    • 再次查看:本地远程分支跟远程仓库保持一致

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8SPIWMA8-1686376953842)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230212105458324.png)]

  • 通过 git merge 将本地远程分支更新到本地分支 使其同源

    • 因为本地修改了文件并commit了,所以在同源后会产生新的内容从而产生新的 commit树(此时进行push就没有问题了)
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p1RWtNAf-1686376953842)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230212110037915.png)]

22. git rerere

  • 记录解决的冲突方式
  • 相同冲突只要执行一次

23. git 传输协议

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ri9g8KbH-1686376953842)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230211200028987.png)]

  • 哑协议 传输进度不可见,速度比智能协议慢

示例:

  • 将本地 git_learning文件下的git仓库备份到本地 git_backup文件下

    • –bare :不带工作区的裸仓库
    git_learning路径:/Users/mikasa/Documents/编程/git_learning
    
    git clone --bare file:///路径/.git [仓库名.git]
    
    git clone --bare file:Users/mikasa/Documents/编程/git_learning/.git backup.git
    
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s850XKCW-1686376953843)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230211200750567.png)]

24. 流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Buc5wfbK-1686376953843)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230211110017597.png)]

25. 分离头指针 detached HEAD

HEAD翻译为“头部”,在Git中我们一般称为“头指针”,主要表示当前工作区基于哪个版本进行开发,也可以理解为当前开发所在分支的最后一次提交

我们一般切换分支都是使用已经创建的分支,例如git checkout master。另外还有一种操作,就是基于某次提交记录(git checkout commit版本号):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HNIj44L7-1686376953843)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230211170746448.png)]

这种操作切换的工作区没有在任何一个分支上面,与任何一个都没有关系。如果后续没有进行保存,在这个上面做的修改会被 git 彻底丢弃。

26. commit 、tree、blob关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-inFYXl9T-1686376953843)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230211154500729.png)]

一个 commit 对象包含一棵树

commit 树 存放了所有文件夹以及文件的快照,其中一个文件夹也是一棵树

git cat-file 命令显示版本库对象的内容、类型及大小信息。

  • -t 显示对象的类型。

  • -s 显示对象的大小。

  • -e 如果对象存在且有效,命令结束状态返回值为 0 。

  • -p. 根据对象的类型,以优雅的方式显式对象内容。

例:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHOamqbs-1686376953844)(/Users/mikasa/Library/Application Support/typora-user-images/image-20230211163737557.png)]

共有 4 个object对象:

  • Commit 对象
    • Tree对象 (包含所有文件夹和文件的树)
      • tree 对象(doc文件夹的树)
        • blob对象 (文件)

github

高级搜索

面板:https://github.com/search/advanced

参数:

  • in:redme
  • stars:>1000
  • language:java
  • forks:>1000
  • filename:gitlab-ci.yml (搜索仓库中文件名包含 xx的)

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

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

相关文章

智能指针 smart_ptr

智能指针 为什么需要智能指针&#xff1f;内存泄漏什么是内存泄漏&#xff0c;内存泄漏的危害内存泄漏分类 智能指针的使用及原理RAII智能指针的原理std::auto_ptrstd::unique_ptrstd::shared_ptr 为什么需要智能指针&#xff1f; 下面我们先分析一下下面这段程序有没有什么内…

ps打开出现dll文件丢失怎么办,dll修复的三个方法

在Windows中&#xff0c;动态链接库&#xff08;DLL&#xff09;是一种可重用的代码和数据结构&#xff0c;它由多个应用程序共享&#xff0c;以提高内存利用率并减少冗余。DLL文件通常包含操作系统函数、图形驱动程序、网络驱动程序等&#xff0c;它们在Windows启动时被加载到…

大话Stable-Diffusion-Webui-客制化主题(四)

文章目录 目标效果开始重要说明单选框以及复选框图标样式更改gradio主题构建器上传主题方式代码上传主题方式目标 在DIY的主题中更改gradio单选框组件以及复选框组件的勾选后图标样式 效果 开始 笔者在使用gradio的主题构建器的过程中发现,gradio的复选框以及单选框组件勾选…

高通 Camera HAL3:如何在CAMX中查找Android TAG

之前的博文&#xff1a;《高通 Camera HAL3&#xff1a;添加一个VendorTag》中提到过&#xff0c;MetadataTag在CamX中有两种体现&#xff0c;可以是预定义的AndroidTag或是自定义VendorTag。 自定义VendorTag博文中已经讲解了 如何在CAMX中查找AndroidTag是经常要做的事 下…

【2】Midjourney注册

随着AI技术的问世&#xff0c;2023年可以说是AI爆炸性成长的一年&#xff0c;近期最广为人知的AI服务除了chatgpt外&#xff0c;就是从去年五月就已经问世的AI绘画工具mid journey了。 ▲几个AI工具也代表了人工智能的热门阶段 只要输入一段文字&#xff0c;AI就会根据语意计算…

Android 逆向之安全防护基本策略

对抗反编译 混淆 使用混淆主要可以减小包的大小。混淆对于安全保护来说&#xff0c;只是增加了阅读难度而已。混淆不会把关键代码混淆掉&#xff0c;比如MainActivity&#xff0c;Application等&#xff0c;可以通过分析smali和阅读jar包定位代码。 资源混淆也是换汤不换药&…

【VPX612】基于C6678 的6U VPX 实时信号处理平台

产品概述 VPX612 是一款基于6U VPX 架构的高性能实时信号处理平台&#xff0c;该平台采用4 片TI 的KeyStone 系列多核DSP TMS320C6678 作为主处理单元&#xff0c;采用1 片Xilinx 的Kintex-7 系列FPGA 作为协处理单元&#xff0c;各个处理节点之间通过高速串行总线进行互联。板…

遇到这3种接口测试问题,其实,你可以这么办~

作为整个软件项目的必经环节&#xff0c;软件测试是不可缺少的“查漏补缺”环节。而作为软件测试中的重要一环——接口测试&#xff0c;几乎串联了整个项目所有的输入和输出环节。 前几年&#xff0c;我在做后端测试时&#xff0c;接触最多的正是接口测试。基于此&#xff0c;…

chatgpt赋能python:Python怎么倒序输出一百以内的整数

Python怎么倒序输出一百以内的整数 Python是一个广泛使用的高级编程语言&#xff0c;其简单易学、易读性强、具有良好的开发效率和可维护性等特点&#xff0c;使得Python成为了软件开发、数据分析和机器学习等领域的首选语言。本篇文章将介绍Python如何倒序输出一百以内的整数…

走进 WWDC 2023 苹果开发者大会

6 月 6 日凌晨开始,苹果在加州总部举行了 WWDC 2023 开发者大会的主题演讲,向全球观众展示了 iOS 17、iPadOS 17、tvOS 17、watchOS 10 和 macOS 14 这五大新系统,以及备受期待的混合现实头显 Apple Vision Pro 和 Mac Pro 等硬件。 以下是对发布会的主要内容和亮点的总结和…

电脑误删文件有多大几率能恢复回来

电脑误删文件是一种常见情况&#xff0c;但能否成功恢复取决于多种因素。本文将探讨电脑误删文件的数据恢复几率以及影响因素&#xff0c;帮助你了解恢复的可能性并采取适当的行动。 工具/原料&#xff1a; 系统版本&#xff1a;win10系统 品牌型号&#xff1a;华硕F83E66Se-S…

开源代码分享(2)—综合能源系统零碳优化调度(附matlab代码)

参考文献&#xff1a; Optimal dispatch of zero-carbon-emission micro Energy Internet integrated with non-supplementary fired compressed air energy storage system | SGEPRI Journals & Magazine | IEEE Xplore 1.引言 全球能源危机和环境污染的双重压力促使能量…

Vision Transformer综述 part I Transformer简介及组成

Vision Transformer综述 1. Transformer简介2. Transformer组成2.1 Self-AttentionMulti-Head Attention&#xff08;多头注意力&#xff09; 2.2 Transformer的其他关键概念2.2.1 Feed-Forward Network 前馈网络2.2.2 Residual Connection 残差连接2.2.3 解码器中的最后一层 1…

红蓝攻防基础-认识红蓝紫,初步学习网络安全属于那个队?

一、关于红队 红队&#xff0c;也叫蓝军是指网络实战攻防演练中的攻击一方&#xff0c;以发现系统薄弱环节、提升系统安全性为目标&#xff0c;一般会针对目标单位的从业人员以及目标系统所在网络内的软件、硬件设备执行多角度、全方位、对抗性的混合式模拟攻击&#xff0c;通过…

HTML中的 JavaScript 运行模式

导读&#xff1a; 在前面章节中&#xff0c;我们提到了&#xff0c;JavaScript在诞生初期&#xff0c;主要用途是代替Perl等服务器端语言处理输入验证,但如今 JavaScript,已经被广泛应用在了 WEB 开发领域&#xff0c;所以本章节就和大家聊聊&#xff0c;JavaScript&#xff0c…

HTML5-创建HTML文档

HTML5中的一个主要变化是&#xff1a;将元素的语义与元素对其内容呈现结果的影响分开。从原理上讲这合乎情理。HTML元素负责文档内容的结构和含义&#xff0c;内容的呈现则由应用于元素上的CSS样式控制。下面介绍最基础的HTML元素&#xff1a;文档元素和元数据元素。 一、构建…

leetcode 85. 最大矩形

题目链接&#xff1a;leetcode 85 1.题目 给定一个仅包含 0 和 1 、大小为 rows x cols 的二维二进制矩阵&#xff0c;找出只包含 1 的最大矩形&#xff0c;并返回其面积。 2.示例 1&#xff09;示例 1&#xff1a; 输入&#xff1a;matrix [[“1”,“0”,“1”,“0”,“…

window服务器环境将springboot项目 jar包安装成一个window服务自启动

目录 1.下载WinSW工具 2.新建一个Window Service信息的xml文件 3.将xml和exe重命名 4.安装卸载服务 5.修改配置文件 6.常用命令(注意winsw是exe名字 1.下载WinSW工具 下载winswhttps://github.com/winsw/winsw/releases 2.新建一个Window Service信息的xml文件 <!--…

在组态软件中开发脚本功能的方法

一、概述 大多数的组态软件都具有脚本功能&#xff0c;脚本可能是VBS、Lua、C#等语言&#xff0c;也可能是厂家自定义的一种语言。通过脚本&#xff0c;组态软件可以实现非常灵活的功能。 脚本的功能&#xff0c;基本可以定义为&#xff1a;读入外部数据&#xff0c;改变可视…

Rocketmq面试(六)Rocketmq6种找不到Broker的情况

1.发送消息 Rocketmq Client在发送消息的时候&#xff0c;会根据topic首先从本地缓存获取Broker&#xff0c;获取Broker&#xff0c;如果获取不到&#xff0c;就会到Name Server集群中获取 2.消息偏移量 客户端获取消息偏移量&#xff08;Consume Offset&#xff09;的时候&…