【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.rhkb.cn/news/462231.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis分布式锁在项目中的应用总结

项目应用 应用1 redis分布式锁实现两个操作的原子性 需求&#xff1a;实现一人一单业务逻辑时&#xff08;如果能走到这个逻辑&#xff0c;代表库存是充足的&#xff09;&#xff0c;我们需要 先查询订单 如果订单不存在即没有买过则创建订单 这两个步骤我们要保证是原子…

前端 react 面试题(二)

文章目录 hooks的使用规则为什么hooks要确保在函数组件的最顶层,而不能放置在循环或者条件语句中。react的事件模型react的合成事件是如何实现的react事件传参,可以使用箭头函数或bind方法,这两种哪一种更好使用箭头函数:使用`bind`方法:react的事件模型和vue的区别React …

1分钟解决Excel打开CSV文件出现乱码问题

一、编码问题 1、不同编码格式 CSV 文件有多种编码格式&#xff0c;如 UTF - 8、UTF - 16、ANSI 等。如果 CSV 文件是 UTF - 8 编码&#xff0c;而 Excel 默认使用的是 ANSI 编码打开&#xff0c;就可能出现乱码。例如&#xff0c;许多从网络应用程序或非 Windows 系统生成的 …

【python】OpenCV—Tracking(10.4)—Centroid

文章目录 1、任务描述2、人脸检测模型3、完整代码4、结果展示5、涉及到的库函数6、参考 1、任务描述 基于质心实现多目标&#xff08;以人脸为例&#xff09;跟踪 人脸检测采用深度学习的方法 核心步骤&#xff1a; 步骤#1&#xff1a;接受边界框坐标并计算质心 步骤#2&…

GraphQL系列 - 第2讲 Spring集成GraphQL

目录 一、maven依赖二、Schema 定义三、代码集成3.1 创建模型类3.2 创建服务类3.3 创建控制器类 四、单元测试五、实际 HTTP 请求测试5.1 查询单个 Person5.2 查询所有 People5.3 添加 Person 六、其他6.1 开启graphiql6.2 开启schema查看端点 一、maven依赖 首先&#xff0c;…

Golang | Leetcode Golang题解之第526题优美的排列

题目&#xff1a; 题解&#xff1a; func countArrangement(n int) int {f : make([]int, 1<<n)f[0] 1for mask : 1; mask < 1<<n; mask {num : bits.OnesCount(uint(mask))for i : 0; i < n; i {if mask>>i&1 > 0 && (num%(i1) 0 |…

模拟栈的实现

栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。 压栈&…

Win10搭建SFTP服务器

1、下载安装 Release v9.5.0.0p1-Beta PowerShell/Win32-OpenSSH GitHub 下载OpenSSH-Win64.zip 解压之后放入到&#xff1a;C:\Program Files (x86)\OpenSSH-Win64以管理员身份打开CMD进入到 C:\Program Files (x86)\OpenSSH-Win64 文件夹执行命令 powershell.exe -Exec…

WordPress网站添加嵌入B站视频,自适应屏幕大小,取消自动播放

结合bv号 改成以下嵌入式代码&#xff08;自适应屏幕大小,取消自动播放&#xff09; <iframe style"width: 100%; aspect-ratio: 16/9;" src"//player.bilibili.com/player.html?isOutsidetrue&bvidBV13CSVYREpr&p1&autoplay0" scrolling…

C语言内幕--全局变量(结合内存分区、汇编视角看类型、连接器)

前言 学习资源&#xff1a;b站up主&#xff1a;底层技术栈学过C语言都知道&#xff0c;全局变量可以再全局中使用&#xff0c;其实全局变量内部还是涉及到不少知识&#xff0c;这里从内存分区、汇编视角看类型、连接器等角度看待全局变量&#xff1b;由于涉及到底层技术&#…

省级-建成区绿化覆盖率数据(2006-2022年)

建成区绿化覆盖率是指城市建成区的绿化覆盖面积占建成区的百分比。 城市绿化覆盖率的提升&#xff0c;不仅能够改善城市的空气质量&#xff0c;降低噪音污染&#xff0c;还能提高城市的生物多样性&#xff0c;为市民提供更多的休闲和娱乐空间。 2006年-2022年省级-建成区绿化…

基于CNN-BiLSTM的时间序列数据预测,15个输入1个输出,可以更改数据集,MATLAB代码

1. 数据收集与预处理 数据清洗&#xff1a;处理缺失值、异常值等。特征工程&#xff1a;提取有助于预测的特征。数据标准化&#xff1a;将时间序列数据标准化&#xff0c;使其具有零均值和单位方差&#xff0c;有助于模型训练。滑动窗口划分&#xff1a;将时间序列数据划分为多…

SSM学习 day02

一、vue项目开发流程 vue根组件 <template><div><h1>{{ message }}</h1><element-view></element-view></div> </template><script> import ElementView from ./views/Element/ElementView.vue export default {compon…

【NOIP普及组】 FBI树

【NOIP普及组】 FBI树 C语言版本C 版本Java版本Python版本 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 我们可以把由“0”和“1”组成的字符串分为三类&#xff1a;全“0”串称为B串&#xff0c;全“1”串称为I串&#xff0c;既含“0”又…

大数据新视界 -- 大数据大厂之数据质量管理全景洞察:从荆棘挑战到辉煌策略与前沿曙光

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

基于 webpack 项目接入 vite 你可能需要注意的点

前言 在之前的 如何优化你的 vue-cli 项目&#xff1f; 一文中介绍基于 webpack 进行的一些优化方法&#xff0c;本文的核心是基于一个 vue2 的项目&#xff08;也就是上篇文章中的项目&#xff09;来继续介绍一下如何接入 vite&#xff0c;以及这个过程中需要关注的点。 之前…

Python工具箱系列(五十七)

图像分割与人脸识别 众所周知图像是由若干有意义的像素组成的&#xff0c;图像分割作为计算机视觉的基础&#xff0c;对具有现有目标和较精确边界的图像进行分割&#xff0c;实现在图像像素级别上的分类任务。图像分割可分为语义分割和实例分割两类&#xff0c;区别如下&#x…

日志代码编写

&#x1f30e;日志代码编写 文章目录&#xff1a; 日志代码编写 了解日志 日志编写       日志等级       获取时间信息       获取文件名行号及处理可变参数列表       以宏的形式传参       日志加锁       日志消息输出方式 完整代码 …

告别繁琐统计,一键掌握微信数据

微信数据管理的挑战在数字时代&#xff0c;微信已成为我们日常沟通和商业活动的重要工具。然而&#xff0c;随着微信号数量的增加&#xff0c;手动统计每个账号的数据变得越来越繁琐。从好友数量到会话记录&#xff0c;再到转账和红包&#xff0c;每一项都需要耗费大量的时间和…

【第几小】

题目 代码 //分块可以AC 20个点的块长&#xff0c; sqrt(n)*5#include<bits/stdc.h> using namespace std;int main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n; cin>>n;vector<int> a(n1,0);//分块int len sqrt(n)*5; //块长int k (n%len…