【Git】Git常用命令

目录

  • 1 前言
  • 2 git命令
    • 2.1 branch
    • 2.2 checkout
    • 2.3 pull and push
    • 2.4 config
      • 2.4.1 Proxy
    • 2.5 tag
    • 2.6 rebase
    • 2.7 patch
    • 2.8 remote
    • 2.9 submodule
    • 2.10 rm
    • 2.10 gitignore
    • 2.11 某个commit更改了哪些文件
    • 2.12 clean
  • 3 结束语

1 前言

本章记录总结在使用git过程中常用的一些命令,方便查看。

2 git命令

2.1 branch

//查看本地和远程分支
git branch -a

在执行git branch -a时,远程已经删除的分支但仍然显示了,或者远程有新分支没有显示的,可以使用下边的命令进行更新同步。

git fetch --prune
//本地分支与远程哪个分支相关联
git branch -vv

如果与远程有关联,则会先显示本地分支名+commit id+远程分支名,如果没有关联,则只会显示本地分支。
本地与远程关联分支

//让本地分支与远程某个分支关联
git branch -u <remote>/<branch> <local_branch>
//与上边等价的命令
git branch --set-upstream-to=<remote>/<branch> <local_branch>
/*设置上游分支后,你可以使用 git pull 和 git push 命令来同步远程和本地分支,而不需要每次都指定远程分支的名称。*/
//查看本地与远程关联的分支
git config --list
//本地分支重命名
git branch -m old_branch new_branch  

2.2 checkout

//切换分支
git checkout <branch-name>
//创建一个新分支并同时切换到它
git checkout -b <new-branch-name>
//检出特定的提交,处于分离 HEAD 状态
git checkout <commit-hash>
//用于恢复工作树中被修改的文件到仓库中的版本
git checkout -- <file-path>
//clone远程某个分支
git clone -b branch_name <remote-URL>
//如果已经clone下来了,需要拉取远程某个分支。
git checkout -b feature-branch origin/feature-branch
//检出本地标签
git checkout <tag-name>
//看一下远程都有什么tag
git fetch --tags
//将远程标签 v1.0.0 拉取到本地
git checkout tags/v1.0.0
//从标签 v1.0.0 创建一个名为 release-1.0 的新分支
git checkout -b release-1.0 tags/v1.0.0

想在旧仓库的基础上创建一个没有commit记录的新分支,使用如下指令。

git checkout --orphan new_branch

2.3 pull and push

git pull origin <远程分支名>:<本地分支>
git push origin <本地指定分支名>:<远程指定分支名>
//加上-u参数可以将本地分支与远程分支关联起来,
//以后直接使用git push和git pull即可
git push -u origin <本地指定分支名>:<远程指定分支名>
git pull origin master -- /src

git pull origin master – /src // 这将只更新/src文件夹中的更改,并将其合并到本地master分支中
git push origin master:path/to/src //将仅上传 src 文件夹下的更改,并将它们推送到名为 master 的远程分支

2.4 config

config配置的选项内容在windows下保存在C:\Users\<user-name>\.gitconfig文件中,可以直接打开更改查看,也可以使用命令配置查看。

//查看配置
git config --list

在进行与远程仓库连接时,一般可用两种方式,一是Git凭据,二是SSH密钥对。
如果使用的是Git凭证,可当用户名或者密码更改了,需要重设时,可使用如下命令。

git config --global --unset credential.helper
/*此处使用--global参数,意味着该行为只影响系统上当前用户,如果使用--system参数,意味着将影响系统上所有用户的git行为。*/
//以下命令用于解决每次都要输入密码的问题
git config --global credential.helper store
git config --global user.name"名字"
git config --global user.email"邮件"

可以给常用的一些命令设置一些别名,我一般直接在.gitconfig文件中直接更改的。

[alias]co = checkoutci = commitcom = commitst = statusbr = branchhist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=shortsw = switch

2.4.1 Proxy

设置全局代理。

# 设置 HTTP 代理  
git config --global http.proxy  http://xxx.xxx.xxx.xxx:port# 设置 HTTPS 代理  
git config --global https.proxy  http://xxx.xxx.xxx.xxx:port# 清除全局 HTTP 代理  
git config --global --unset http.proxy  # 清除全局 HTTPS 代理  
git config --global --unset https.proxy

设置临时代理,只对当前终端有用。

# 设置 HTTP 代理环境变量  
export http_proxy=http://xxx.xxx.xxx.xxx:port# 设置 HTTPS 代理环境变量  
export https_proxy=https://proxyuser:proxypass@proxy.server.com:8080     # 清除环境变量(可选)  
unset http_proxy  
unset https_proxy

2.5 tag

//显示远程tag
git ls-remote --tags origin
//将远程tag下载到本地
git fetch --tags
//删除本地tag
git tag -d <tag_name>
//删除远程仓库tag
git push origin :refs/tags/v1.0.1

推送tag,注意推送一个tag(标签)到远程仓库,并不直接意味着所有之前的commit记录也会被推送,tag只是对你已经推送到远程仓库的commit记录的一个额外标记。

//推送单个tag
git push origin v1.0 
//推送所有tags
git push origin --tags

2.6 rebase

使用rebase可以对commit进行变基或者修改commit信息,我在开发中经常使用的地方是在本地时,会提交很多commit记录,但在push到远程仓库前,我会使用rebase将commit记录合并整理,使其更简洁。

git rebase -i commit_id
//-i, 想删除某次commit之前的记录。
//-d, drop 丢弃commit,将某次的内容修改也丢弃了。
//-r, reword 使用commit,修改commit信息。
//-s, squash 使用commit,将commit信息合并到上一个commit中。
//-f, fixup 使用commit,丢弃commit信息。
//修改最后一次commit信息
git commit --amend
//修改并合并第一次commit信息
git rebase -i --root

2.7 patch

生成补丁。

//commit_id是指要做的log前边一个
git format-patch commit_id
//生成两个commit id之间的patch
git format-patch 365a..4e16

打补丁。

git am patch_file

有的时候,由于冲突没成功,解决冲突后需要再次打补丁时,需要放弃上次的动作。

git am --abort

2.8 remote

//查看远程地址
git remote -v
//删除远程地址
git remote rm origin
//增加远程地址
git remote add origin url_link
//或者直接更改远程仓库地址
git remote set-url origin new_url_link

2.9 submodule

//新增举例,semtech_radio/SWDR001不能提前创建,不然会提示已经存在git。git submodule add https://github.com/Lora-net/SWDR001.git semtech_radio/SWDR001//查看有哪些submodulegit submodule

拉取带有submodule的仓库。

//clone时,添加--recursive参数
git clone <remote-URL> --recursive
//仓库已经存在
git submodule update --init --recursive
//删除submodule
git submodule deinit <submodule_path>

2.10 rm

如果某个文件本来在git的版本管理中,现在想要去掉。

//在git管理中去除文件file_name,如果使用“.”,则意味着去除当前目录下全部文件。
git rm -r --cached file_name

2.10 gitignore

我们一般会在仓库根目录下添加文件.gitignore,用于排除一些不想纳入git管理的文件,怎么知道是.gitignore中哪条语句在控制这个文件呢?

git check-ignore -v file_name

2.11 某个commit更改了哪些文件

//查看所有commit,每个commit更改了哪些文件
Git log --stat
//查看某个commit更改了哪些文件
Git show --raw commit_id

2.12 clean

有些文件没有被git纳入管理,想要删除的时候可以使用clean命令,但如果这个文件使用git add加入过,clean命令对这个文件就无用了。

//一般使用以下命令即可
git clean -df
//n:显示将要删除的文件,但不会执行。可以-ndf一起使用,不会删除。
//d:递归删除
//f:强制删除
//x:默认不删除gitignore匹配的文件,加上-x将会删除匹配文件

3 结束语

本章相当于一个日常cheat sheet,忘记了就拿出来看看,有新技术点了就在更新一下。

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

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

相关文章

cgroup2版本下使用cgroups对内存/cpu进行控制

先查看cgroups的版本支持: cat /proc/filesystems | grep cgroup 运行结果: 如上表示支持cgroup2版本 一、对内存进行控制 cgroup版本对于内存控制是单独使用/sys/fs/cgroup/memory路径控制的,而在cgroup2版本中是统一管理,所以没有该路径,所以只需先进入该路径: cd /sys/…

安卓应用跳转回流的统一和复用

本文字数&#xff1a;6799字 预计阅读时间&#xff1a;35分钟 作为一个功能复杂的应用&#xff0c;无法避免地需要支持众多路径的回流&#xff0c;比如从Launcher、从Push通知、从端外H5、从合作第三方App以及从系统资源分享组件等。 我们知道&#xff0c;不同的回流路径会通过…

C3.【C++ Cont】名字空间、注释和变量

目录 1.回顾 2.名字空间(也称命名空间) 介绍 代码示例 3.注释 4.练习 B2003 输出第二个整数 方法1 方法2 1.回顾 在C1.【C Cont】准备中提到了名字空间(namespace)语句 using namespace std; 2.名字空间(也称命名空间) 介绍 1.处在在同一个空间内的,若有重名则会名…

常见自动化测试框架分层架构

作为一名专业的测试人员&#xff0c;搭建一个高级的自动化测试框架需要考虑多个因素。以下是一些步骤和指导&#xff0c;帮助你构建一个强大且灵活的自动化测试框架&#xff1a; 1. 理解框架的概念&#xff1a; - 首先&#xff0c;我们需要明确什么是“框架”。在自动化测试中…

103 - Lecture 2 Table and Data Part 1

SQL - Tables and Data Part 1 Relational Database Management System(RDBMS) 关系型数据库管理系统&#xff08;RDBMS&#xff09;是基于关系模型的数据库系统&#xff0c;它支持多种关系操作。关系模型是一种数据存储和检索的模型&#xff0c;它使用表格来组织数据&#x…

NestJS vs Fastify:Node.js框架的性能对决

在Node.js的世界中&#xff0c;框架的选择对于应用的性能和可维护性有着至关重要的影响。NestJS和Fastify是两个备受瞩目的框架&#xff0c;它们各自以其独特的优势在开发者社区中赢得了声誉。本文将深入探讨这两个框架的性能特点&#xff0c;并分析它们在不同场景下的适用性。…

【NOIP普及组】明明的随机数

【NOIP普及组】明明的随机数 C语言实现C实现Java实现Python实现 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 明明想在学校中请一些同学一起做一项问卷调查&#xff0c;为了实验的客观性&#xff0c;他先用计算机生成了N个1到1000之间的随…

python中t是什么意思

python中t是什么意思&#xff1f; python中t指的是“\r”&#xff1a;回车符&#xff0c;返回到这一行的开头&#xff0c;return的意思。 其他相关&#xff1a; \n&#xff1a;换行符&#xff0c;到下一行的同一位置&#xff0c;纵坐标相同&#xff0c;new line的意思。 \t…

OracleJDK与OpenJDK的区别(附带win11下多版本jdk安装)

OracleJDK与OpenJDK的区别&#xff08;附带win11下多版本jdk安装&#xff09; 在Java开发领域&#xff0c;OracleJDK与OpenJDK是两个常被提及的名词&#xff0c;它们都是Java开发工具包&#xff08;JDK&#xff09;的实现&#xff0c;但各自具有不同的特点和优势。在早期的jav…

代码随想录算法训练营第三十一天 | 56.合并区间 738.单调递增的数字 968.监控二叉树

LeetCode 56.合并区间&#xff1a; 文章链接 题目链接&#xff1a;56.合并区间 思路&#xff1a; ① 合并所有重叠的区间&#xff0c;合并后的区间数组不重叠&#xff0c;因此下面两种多区间重叠&#xff0c;其中的区间都要进行合并 ② 合并区间&#xff1a;因为情况2也算作…

[ComfyUI]FaceAging:太好玩啦!FaceAging终于装好了!负50到正100岁随心调整!超强又难装的节点安装教程来了! Comfyui教程

大家好&#xff01;今天我要向大家介绍一个超级有趣的话题——[ComfyUI]FaceAging&#xff01;这个工具能够让你轻松实现人脸年龄的调整&#xff0c;从负50岁到正100岁&#xff0c;让你的创作更加有趣和独特。 想象一下&#xff0c;你有一个强大的AI助手&#xff0c;它能够根据…

蓝桥杯真题——乐乐的序列和(C语言)

问题描述 乐乐在玩一个游戏&#xff0c;她有一排宝石&#xff0c;每个宝石上都刻有一个整数值。她的目标是从中挑选出一些宝石&#xff0c;使得选出的宝石数量为偶数&#xff0c;且这些宝石上的数字总和最大。如果不选任何宝石&#xff08;即选出宝石数量为 00&#xff0c;也是…

猫用宠物空气净化器哪个牌子好?求噪音小的宠物空气净化器推荐!

最近真是烦躁到了顶峰&#xff01;猫咪换毛季太折磨人了&#xff0c;白天上班累的要死&#xff0c;晚上回家还要和猫毛斗争。每天回家都是一场豪赌&#xff0c;需要花费的清理时间取决于家里的猫毛散落程度。有时候忙起来完全不想管&#xff0c;回到家只想躺着。 但最近身体出…

redis7学习笔记

文章目录 1. 简介1.1 功能介绍1.1.1 分布式缓存1.1.2 内存存储和持久化(RDBAOF)1.1.3 高可用架构搭配1.1.4 缓存穿透、击穿、雪崩1.1.5 分布式锁1.1.6 队列 1.2 数据类型StringListHashSetZSetGEOHyperLogLogBitmapBitfieldStream 2. 命令2.1 通用命令copydeldumpexistsexpire …

32位汇编——通用寄存器

通用寄存器 什么是寄存器呢&#xff1f; 计算机在三个地方可以存储数据&#xff0c;第一个是把数据存到CPU中&#xff0c;第二个把数据存到内存中&#xff0c;第三个把数据存到硬盘上。 那这个所谓的寄存器&#xff0c;就是CPU中用来存储数据的地方。那这个寄存器有多大呢&a…

1.1 OpenCV准备工作

介绍了如何在Windows系统中配置Python和Anaconda环境&#xff0c;并安装OpenCV库。首先从Python官网下载并安装Python&#xff0c;然后配置环境变量。接着安装Anaconda&#xff0c;并通过Anaconda Navigator或Prompt管理包。最后&#xff0c;在Anaconda Prompt中使用pip命令安装…

在gitlab,把新分支替换成master分支

1、备份master分支&#xff0c;可以打tag 2、删除master分支 正常情况下&#xff0c;master分支不允许删除&#xff0c;需要做两个操作才能删除 a、变更项目默认分支为非master分支&#xff0c;可以先随便选择 b、取消master为非保护分支 操作了上述两步&#xff0c;就可以删…

【专题】产业全球化视角下中国企业出海人才趋势洞察报告汇总PDF洞察(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p38107 在当今全球化进程不断加速的时代背景下&#xff0c;出海业务已成为众多企业拓展市场、实现可持续发展的重要战略方向。随着世界经济的紧密联系&#xff0c;不同国家和地区的市场机遇与挑战并存。文末202份出海行业研究报告最新…

uniapp vue3 使用echarts-gl 绘画3d图表

我自己翻遍了网上&#xff0c;以及插件市场&#xff0c;其实并没有uniapp 上使用echarts-gl的样例&#xff0c;大多数都是使用插件市场的echarts的插件 开始自己尝试直接用echartsgl 没有成功&#xff0c;后来尝试使用threejs 但是也遇到一些问题&#xff0c;最后我看官网的时…

世窗健康亮相第三届中国营养师发展大会——AI赋能营养健康 共建人类健康共同体

近日,为贯彻落实《“健康中国2030”规划纲要》,加强营养健康人才队伍建设,推动中国营养健康产业迈向高质量发展。由中国营养师发展大会组委会主办,全国各地营养师协会等多家机构共同发起的第三届中国营养师发展大会在石家庄市成功举办。作为深耕数字健康领域多年的综合服务运营…