git使用指南

embedded/2025/3/17 18:31:54/

git_1">git使用指南

工作中常用的 Git 命令,这些基本够用了。能够记住命令的话可以使你的工作效率提高一大截,当然使用可视化的代码编译工具操作也可。管他操作是否高大上,适合你的才是最好的!

1. 克隆远程仓库的代码到本地

git clone git@xxx.git

拉取下来默认分支名为 master

2. 拉取最新代码更新到本地

  • 如果本地代码库没有任何修改,直接使用:
git pull
  • 如果本地代码有修改,但没有提交或暂存,git pull时会报错,提醒你有未提交/暂存的修改。此时,你需要根据需求:
    • 使用 git stash 将修改的内容暂存起来;
    • 或者将修改提交:

git commit -m “注释内容”
```
注释内容主要用来描述本次修改内容。

3. 创建本地分支

使用以下命令创建分支:

git checkout -b 分支名
  • 如果分支名不存在,则会创建一个新的分支并切换到新建分支;
  • 如果分支名存在,则会直接切换到该分支。

4. 在本地分支上进行修改操作,并提交

假如我们在本地名为 master 的分支上进行了修改:

  1. 使用 git add . 将当前修改添加,也可以使用 git add 目标文件名 添加指定文件;
  2. 使用 git status 查看当前状态;
  3. 如果有某些文件在 .gitignore 文件里面被忽略了不让 add,可以使用:
git add -f 目标文件名

进行强制添加;
4. add 完之后,使用:

git commit -m "注释内容"

提交;
5. 提交后,使用:

git log

查看刚刚的提交记录,包括提交时写的注释内容;
6. 如果你做了不止一次修改,不想每次都重新用新的注释内容进行提交,不想要每次都生成一个新的 commit 节点,可以使用:

git commit --amend

将第二次提交结合上一次的提交内容合成一个 commit 节点;
7. 最后,将提交的修改 push 到远端分支上,使用:

it push 远端节点

假如想提交到远端的 master 分支上,使用:

git push origin master

进行不覆盖式的提交。如果想用本地的代码完全覆盖掉远端的分支,使用:

git push -f origin master

强制提交。

5. 删除远端分支

  • 删除远端分支:
git push origin --delete 远端分支名
  • 删除本地分支:
git branch -d 本地分支名

或者使用强制删除:

git branch -D 本地分支名

git_pull__git_pull_r__86">6. git pullgit pull -r 的区别

假设有个场景,A 和 B 都需要 push 代码到 originmaster 上,A 和 B 拉取的代码后,新建了自己的分支进行修改,并要提交到 master 上;

此时 A 的修改内容先提交到 origin 上;

那么 B 在提交前需要拉取最新的代码(包含 A 的修改的代码 D),此时 B 有两个选择:

  • 如果使用:

git pull origin master

拉取代码,使用 `git log` 查看提交记录,此时可以看到有一个 commit 节点叫 `Merge xxxxxxxxxx…`,这样会形成一个菱形的提交记录;- 如果使用:
```bash
git pull -r origin master

可以避免这种菱形提交,会将 B 的提交 rebase 到最新 master 节点上,此时可能会遇到的问题是,如果 B 的提交和 A 的提交有交集的地方,会引起冲突。如果这种情况,会提示你先解决冲突 conflict,需要 B 去比较与 A 的提交冲突的地方,解决完冲突之后,add 更新下 B 的修改后,执行:

git rebase --continue

就可以继续 pull -r 的过程;过程中如果觉得有任何操作失误,可以使用:

git rebase --abort

随时停止 pull rebase 的过程,并且分支会回到 rebase 开始前的状态。

7. 将分支 A 的修改提交到分支 B

有时候我们可能需要将分支 A 上做的一些修改直接提交到分支 B 上,先切换到分支 B,提前 git log 看下分支 A 上需要的节点号是多少,使用:

git cherry-pick commit节点号

就可以将在 A 上做的某些改动直接 pick 到 B 上。

8. 修改某次的 commit 内容

有些时候很多个提交节点后,发现某个节点上的修改有问题,希望回退到某个节点进行修改,此时可以使用:

git rebase -i commit节点号

回退到你希望修改的节点的前一个节点处,就可以看到你需要修改的节点。将该节点前的 pick 改成 edit 后保存退出,然后你就可以在这个节点继续进行修改。修改结束后使用:

git commit --amend

进行提交,这个操作会将你当前修改合并到这个 commit 节点之前的修改中,提交后使用:

git rebase --continue

我们就可以成功回到最新的修改节点。

9. 还有一些比较暴力但是很好用的命令

  • git reset --hard commit节点号
    这个命令很暴力,但是很快,当你搞不清那些节点的时候,不知道自己提交了什么,想要恢复到你想回去的某次提交的时候可以使用,先用 git log 查看一下之前 commit 的节点,找到你想退回到的某个 commit id,复制下来。

    比如这里我想退回到最初的 origin/master,其 commit 节点号是 d9ab27dc42c753b9a1bb2163221b73f63bd490af,那么我可以使用:

    git reset --hard d9ab27dc42c753b9a1bb2163221b73f63bd490af
    

    回到这个节点。

  • 有时候会用到:

git push -u origin 分支名

- 使用 `git squash` 将多个 commit 节点进行合并;
- 本地创建分支:
```bash
git checkout -b 分支名

并推至远端分支(不存在):

git push --set-upstream origin 分支名

推送本地分支至远端,并创建远程分支。


http://www.ppmy.cn/embedded/173394.html

相关文章

HTTP 和 HTTPS:从不安全到安全的蜕变之路

HTTP(超文本传输协议)和 HTTPS(超文本传输安全协议)是网络上最常用的协议,它们为网页浏览、数据传输提供基础支持。虽然只有一字之差,但 HTTPS 却对 HTTP 做出了巨大的改进,尤其在安全性方面。本…

java泛型通配符?及上下界(extends,super)保证安全性、灵活性、可读性

在 Java 中,泛型通配符(?)用于表示未知类型,通常用于增强泛型的灵活性。通配符可以与上下限结合使用,以限制泛型的范围。以下是通配符及上下限的使用示例: 1. 无界通配符 (?) 无界通配符表示可以接受任意…

前缀和算法第一弹(一维前缀和和二维前缀和)

目录 前言 1. 一维前缀和 (1)题目及示例 ​编辑 (2)暴力解法 (3)算法优化 2. 二维前缀和 (1)题目及示例 (2)暴力解法 (3)算…

vscode接入DeepSeek 免费送2000 万 Tokens 解决DeepSeek无法充值问题

1. 在vscode中安装插件 Cline 2.打开硅基流动官网 3. 注册并登陆,邀请码 WpcqcXMs 4.登录后新建秘钥 5. 在vscode中配置cline (1) API Provider 选择 OpenAI Compatible ; (2) Base URL设置为 https://api.siliconflow.cn](https://api.siliconfl…

MySQL时间溢出原理、影响与解决方案

一、问题背景与现象复现 操作场景: 本文将手把手带您了解mysql时间溢出原理、实战影响与全面解决方案,所有代码均通过dblens for mysql数据库工具验证,推荐使用该工具进行可视化数据库管理和开发。 在MySQL 5.7环境中,若通过命令…

JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3+ 2025 版免费体验方案

JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3 2025 版免费体验方案 前言 JetBrains IDE 是许多开发者的主力工具,但从 2024.02 版本起,JetBrains 调整了试用政策,新用户不再享有默认的 30 天免费试用…

【Maven教程与实战案例】

文章目录 前言一、Maven是什么?二、Maven的安装与配置1. 安装前置条件2. 下载与配置 Maven3. 验证安装 三、Maven的核心概念1. POM.xml 文件2. 构建生命周期与插件机制 四、实战项目示例1. 项目目录结构2. 编写代码App.javaAppTest.java 3. 构建项目4. 运行项目 前言…

应用层之网络应用模型,HTTP/HTTPS协议

应用层是网络协议栈的最顶层,直接为应用程序提供通信服务,定义了不同主机间应用进程交互的规则,包括报文类型、语法、语义及通信时序 一、网络应用模型 1.定义及特点 模型定义核心特点典型应用场景C/S客户端向服务器发起请求,服…