Git-速查

news/2025/2/26 3:05:09

Git

安装 Git 之后,你可以…

配置全局用户信息(推荐)

  • 全局设置,创建本地仓库时默认分支名称为 main(你需要什么名称就该什么名称)【推荐配置为 main 】
git config --global init.defaultBranch main
  • 全局设置,用户名和电子邮箱地址(比如:“张三”、“10086@qq.com”)
git config --global user.name "名字"
git config --global user.email "电子邮箱地址"
  • 查看是否设置成功
git config user.name
git config user.email

创建本地仓库(必须)

  • 为当前文件夹的内容,创建本地仓库
git init
  • 对默认的分支名称不满意,可通过下面命令重命名
git branch -m 新的分支名称
  • 插一句嘴,如果你需要重命名其他分支,而非当前分支,可执行下面命令
git branch -m 老的分支名称 新的分支名称

局部用户信息(可选)

  • 局部设置,本地仓库的用户名和电子邮箱地址(优先从局部设置读取,而非使用全局设置)
git config user.name "名字"
git config user.email "电子邮箱地址"
  • 查看是否设置成功
git config user.name
git config user.email

操作本地仓库(推荐)

  • branch 相关
# 查看分支(列出本地仓库中所有的分支,并且当前所在的分支会被标注出来)
git branch

# 显示简略的分支信息(比如:每个分支的最新提交哈希值)
git branch -v

# 显示详细的分支信息(比如:远程跟踪分支)
git branch -vv

# 切换到指定的分支
git checkout 分支名称

# 创建并切换到一个新分支
git checkout -b 新分支名称

# 尝试删除分支(自动检查分支是否已经合并,没有合并将删除失败)
git branch -d 分支名称

# 强制删除分支
git branch -D 分支名称

# 将xxx分支合并进当前分支(假如当前分支是main,要xxx分支并入main里面)
git merge xxx

# 解决合并冲突
(1)查看冲突文件:	git status
(2)编辑冲突文件:  手动编辑内容,将冲突的内容进行修改
(3)重新执行添加:	git add 文件名
(4)然后执行提交:	git commit -m "这里写你本次提交的备注内容"

  • add 相关
# 将所有文件添加到"待提交区"
git add .

# 将某个文件(password.txt)添加到"待提交区"
git add password.txt

# 从"待提交区"撤回刚才添加的所有文件
git reset

# 从"待提交区"撤回刚才添加的某一个文件(password.txt)
git reset password.txt

  • status 相关
# 显示工作目录和暂存区的状态
git status

  • commit 相关
# 将"代提交区"里面的东西,提交到本地仓库里面
git commit -m "这里写你本次提交的备注内容"

# 不写参数,Git 会自动打开默认的文本编辑器供你输入多行提交信息
git commit

# 撤回刚才提交到"本地仓库"的东西

(1)撤回最近一次的提交,并让已修改的文件回到"待提交区"(即:回到commit的前一刻)
git reset --soft HEAD^

(2)撤回最近一次的提交,只保存文件的修改状态,"待提交区"没有任何内容(即:回到add的前一刻)
git reset HEAD^

(3)撤回最近一次的提交,不保存文件的修改状态,"待提交区"也没有任何内容(即:回到文件没有修改过的状态)
git reset --hard HEAD^

(4)撤销某个特定的历史提交而不是最近的一次提交
例如:要撤销某一个特定的提交,假设其哈希值为 abc123
git revert 会创建一个新的提交,该提交的内容正好抵消指定提交所做的更改,而不会直接删除历史记录
git revert abc1234

温馨提醒:

在Git中,用 HEAD 表示当前版本;
上一个版本就是HEAD^,上上一个版本就是HEAD^^,上一百个版本可以简写为HEAD^100
或者
上一个版本就是HEAD~,上上一个版本就是HEAD~~,上一百个版本可以简写为HEAD~100
区别是
[HEAD^5表示退一步到第五个父提交上,HEAD~5表示连续退五步到第五个父提交上]

Github

与 Github 建立连接

接下来将使用 ssh 方式进行连接,(Github官网)不推荐使用 https 方式

  • 切换到用户目录
cd ~
  • 制作用于保证数据传输安全的密钥(执行下面命令后,出现问答提示,不断按回车键即可)
ssh-keygen -t rsa -C "电子邮箱地址"
  • 执行下面命令,将会输出密钥内容,复制它
type ~/.ssh/id_rsa.pub
  • 打开 Github 网站:https://www.github.com
  • 点击右上角的个人头像,点击 Settings,点击 SSH and GPG keys ,在 SSH keys 菜单里面,填写好 Title 后,将密钥粘贴到 Key 那里。

创建远程仓库

  • 点击右上角的个人头像,点击 Your Repositories,点击 New 创建你的远程仓库
  • Repository name 那里填写仓库名称,如果你想要给这个仓库添加一些说明,在 Description (optional) 那里填写即可
  • 如果选择 Public,仓库将被公开,所有人可见;如果选择 Private,仓库将被设置为私有,只有你自己可见
  • 其他配置,可根据你的需要进行设置,不需要的话,直接点击最下方的 Create repository 即可
  • 点击 SSH,可以看到一个链接:git@github.com:用户名/远程仓库名称.git,复制它

连接远程仓库

  • 添加一个远程仓库,给它命名为 origin(你可以改为其他名字)而它的路径地址,就粘贴你刚才复制的链接
git remote add origin git@github.com:用户名/远程仓库名称.git
  • 查看远程仓库(确保远程仓库已经正确添加)
# 查看名称为 origin 的远程仓库的路径地址
git remote get-url origin

# 查看所有的远程仓库
git remote -v

推送和拉取

  • 推送
假设
“本地仓库”当有两个分支:main、test,当前分支为 test
“远程仓库”的分支名称为 main、develop
“远程仓库”被命名为 cangku

# 将本地仓库的test分支上传到cangku的main分支(即:test => main)
git push cangku test:main

# 将本地仓库的main分支上传到cangku的develop分支(即:main => develop)
git push cangku main:develop

# 将本地仓库的main分支上传到cangku的main分支(即:main => main)
git push cangku main:main
或者简写
git push cangku main

# 注意:上传指令的执行与当前是什么分支无关
  • 设置与查看 “远程跟踪分支”
远程跟踪分支(也称为"上游分支")是 Git 中一个非常有用的功能
远程跟踪分支,是本地仓库中对远程分支的引用

# 设置"远程跟踪分支"的三种方法
# (1) 普通设置
git branch --set-upstream-to=远程仓库名/远程分支名 本地分支名

# (2) 推送+设置
git push --set-upstream 远程仓库名 本地分支:远程分支
或者简写为
git push -u 远程仓库名 本地分支:远程分支

# (3) 拉取+设置(注意:下面的命令将作用于你当前所在的本地分支)
git pull --set-upstream 远程仓库名 远程分支名

# 注意:设置"远程跟踪分支"之后,你以后可以直接使用 git push 和 git pull
而不需要每次都指定远程仓库和分支名称,git会自动知道你的本地分支对应的远程分支


# 查看"远程跟踪分支"的信息
git branch -vv
  • 拉取
# 从远程仓库获取所有远程分支的更新,并呈现内容的变化,但不会修改你的工作目录(也就是不合并)
git fetch 远程仓库名

# 从远程仓库获取某个远程分支的更新,并呈现内容的变化,但不会修改你的工作目录
git fetch 远程仓库名 远程分支

# 注意:无论你当前在哪个本地分支上,git fetch 只会获取相应的远程分支的最新信息,并更新相应的远程跟踪分支,但不会修改你的工作目录(也就是不合并)
# 从远程仓库获取最新的更改,并将这些更改合并到“你当前所在的本地分支”(注意:只能是当前分支,无法更改)
git pull 远程仓库名 远程分支


温馨提示
	git pull 是 git fetch 和 git merge 的组合

假设
	“本地仓库”当有两个分支:main、test,当前分支为 main
	“远程仓库”的分支名称为 main、develop
	“远程仓库”被命名为 cangku

需求
	将cangku中的develop分支合并到本地test分支上


方法一

# (1)切换到本地test分支上
git checkout test

# (2)从远程仓库获取develop分支的最新更改,并合并到当前test分支上
git pull cangku develop	


方法二

# 切换到本地test分支上
git checkout test

# 更新所有"远程跟踪分支"(如cangku/main、cangku/develop)但不会修改你的工作目录或当前分支
git fetch cangku

# 将"远程跟踪分支" cangku/develop 的更改合并到当前test分支上
git merge cangku/develop


# 小提示:远程跟踪分支是本地仓库中对远程分支的引用。它们通常以 cangku/develop 的形式存在。远程跟踪分支用于跟踪远程分支的状态,帮助你了解远程分支的最新提交情况。

Other

  • 如果你使用 VS Code,可借助 git 相关的插件来提高你的工作效率(比如:Git Graph)
  • 如果你只需要托管到 Github 平台,可尝试使用 Github Desktop 图形工具

http://www.niftyadmin.cn/n/5867106.html

相关文章

[Linux]从零开始的STM32MP157 U-Boot网络命令讲解及相关配置

一、前言 在上一次的STM32MP157的教程中,教大家STM32MP157基础命令的使用,同时也验证了我们STM32MP157U-Boot的部分功能。因为U-Boot的网络配置部分比较复杂,所以在上一次的教程中并没有涉及。那么本次教程,我会为大家详细的讲解U…

面试八股文--数据库基础知识总结(1)

1、数据库的定义 数据库(DataBase,DB)简单来说就是数据的集合数据库管理系统(Database Management System,DBMS)是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。数据库系统…

在scss中使用for循环生成头像/icon

在业务中有时会出现相同样式不同icon的情况出现&#xff0c;如果我们使用scss中的for循环的话这个问题很好解决 先列出标签结构 <div v-for"item in function_data" :key"item.id" class"signal_btn"><div :class"btn_avatar (…

Eureka、ZooKeeper 和 Nacos 之间的对比

Eureka、ZooKeeper 和 Nacos 都是分布式系统中常用的服务注册与发现工具&#xff0c;但它们的定位、功能和适用场景有所不同。作为一名开发者&#xff0c;理解它们之间的对比有助于选择合适的技术栈。以下从多个维度进行详细比较&#xff1a; 1. 基本概述 Eureka 来源&#xff…

LeetCode - 23 合并 K 个升序链表

题目来源 23. 合并 K 个升序链表 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例 示例 1&#xff1a; 输入&#xff1a;lists [[1,4,…

JS作用域+this指向 【JavaScript】

JS作用域&#xff1a; 在JavaScript中&#xff0c;作用域指的是程序中变量、函数和对象可访问的上下文环境。JavaScript主要有三种作用域&#xff1a;全局作用域、函数作用域和块作用域&#xff08;ES6引入&#xff09;。 全局作用域&#xff1a;全局作用域中的变量在页面上的…

自由学习记录(38)

python语法 def def print_receipt (store_name, items, total_price, cashier"Self-Checkout", payment_method"Credit Card"): Python 的 函数定义 语法 def print_receipt(...) → 定义了一个名为 print_receipt 的函数。store_name, items, total_…

【ASP .NET Core】ASP .NET Core介绍

最近因为开发小游戏逐渐接触上了ASP .NET Core&#xff08;后面简称ASP&#xff09;&#xff0c;今天就来简单介绍一下&#xff0c;话不多说直接开始。 什么是ASP ASP是微软开发的Web框架&#xff0c;用于后端服务器开发。ASP可以用于开发 Web应用程序&#xff0c;如网页、网站…