git 基本使用

10 阅读6分钟

25.7.15 实习结束,整理一下工作中常用的 git 操作

目录

  • 环境安装和配置
  • Linux平台 & Windows平台
  • 拉取仓库
  • 分支开发流程
  • 合并分支与解决冲突
  • 将仓库的最新版本同步到本地
  • 查看修改记录

环境安装和配置

Linux平台

一、安装步骤(Ubuntu)

sudo apt-get update
sudo apt-get install git

二、 基础配置

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

三、 生成 SSH 密钥并添加到 GitHub

  1. 生成 SSH 密钥

在终端中运行以下命令来生成一个新的 SSH 密钥

your_email@example.com 替换为自己的 GitHub 注册邮箱

ssh-keygen -t ed25519 -C "your_email@example.com"

输出

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/a/.ssh/id_ed25519): [Press Enter]
Enter passphrase (empty for no passphrase): [Press Enter]
Enter same passphrase again: [Press Enter]
Your identification has been saved in /home/a/.ssh/id_ed25519.
Your public key has been saved in /home/a/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
|        .o+      |
|       . o .     |
|      . . . .    |
|       . . . .   |
|        S . . .  |
|       . . . . . |
|      . . . . . .|
|       . . . . . |
|        . . . .  |
+----[SHA256]-----+
  1. 查看公钥

生成密钥后,使用以下命令查看公钥内容:

cat ~/.ssh/id_ed25519.pub

输出如下,复制整个输出的内容

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com
  1. 将公钥添加到 GitHub
  • 登录 GitHub 账户。
  • 点击右上角的头像,选择 Settings
  • 在左侧菜单中,选择 SSH and GPG keys
  • 点击 New SSH key 按钮。
  • Title 字段中,为这个密钥添加一个描述性的标题(例如 "My Laptop SSH Key")。
  • Key 字段中,粘贴你之前复制的公钥内容。
  • 点击 Add SSH key 按钮。
  1. 测试 SSH 连接

为了确保 SSH 密钥配置正确,测试一下与 GitHub 的连接:

ssh -T git@github.com

如果一切正常,会看到类似以下的输出:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

ssh 配置完成

Windows平台

安装步骤

  1. Git官网下载对应版本安装包(32位/64位)
  2. 按向导完成安装(默认选项即可)

基础配置

打开cmd,执行内容与 linux 一致

拉取仓库

可以使用 SSH 克隆 GitHub 仓库。例如:

git clone git@github.com:username/repository.git

分支开发流程

运行以下命令测试 SSH 连接

ssh -T git@github.com

如果返回:Hi your-username! You've successfully authenticated, but GitHub does not provide shell access.

说明 SSH 配置正确,可以继续

  1. 本地创建新分支: git branch [分支名称]

例如:git branch plateform2

  1. 切换到新分支: git checkout [分支名称]

例如:git checkout2

  1. 创建+切换分支: git checkout -b [分支名称]

例如:git checkout -b plateform2

其中:git checkout -b [分支名称]相当于两步

git branch [分支名称]

git checkout [分支名称]

  1. 添加本地需要提交的代码: git add . (. 表示添加全部文件)

例如:git add whl_logmap/map_gen.py

  1. 提交本地代码:git commit -m

例如: git commit -m "fix: correct file write mode in map_gen.py"

提交规范参考:Git 提交规范

4.push到git仓库

命令如下:git push origin [分支名称]

例如:git push origin plateform2

git操作1.png

git操作2.png

报错修改

使用 ssh -T git@github.com检测连接没有问题

可能是项目读写权限没有被正确设置,或项目对创建分支有保护

git操作3.png

合并分支与解决冲突

  1. 合并分支并出现冲突
git merge [分支名称]

两个分支修改了同一文件的相同位置,则会出现冲突警告

Auto-merging [要 merge 的文件名]
CONFLICT (content): Merge conflict in [要 merge 的文件名]
Automatic merge failed; fix conflicts and then commit the result.
  1. 在编辑器中查看冲突文件

在冲突文件中,Git 会用<<<<<<<=======>>>>>>>标记冲突区域

  1. 手动解决冲突
  2. 标记冲突已解决并完成合并
git add [要 merge 的文件名]
git commit -m "合并xxxx分支,解决冲突"
  1. 删除已合并的分支 (可选)
git branch -d feature-vector

将仓库的最新版本同步到本地

从远程仓库拉取最新更改

使用 git pull 命令从远程仓库(GitHub)获取最新更改并合并到本地分支:

git pull origin main  
或
git pull origin master
  • origin 是默认的远程仓库名称(即你克隆的仓库)。
  • mainmaster 是分支名称,根据仓库实际情况选择。

git操作4.png

Please, commit your changes or stash them before you can merge.

冲突处理:如果本地有未提交的修改,先提交或暂存(git stash),再拉取。

方案一(git commit)

git commit -m "描述修改内容"

方案二(git stash) (临时保存/恢复)

git stash        # 将修改存入临时栈
git merge        # 执行合并操作
git stash pop    # 按后进先出原则恢复暂存的修改
  • 查看暂存列表:git stash list
  • 清空暂存:git stash clear

方案三(git reset) (丢弃修改,谨慎使用)

git reset --hard          # 彻底重置所有修改# 
或
git checkout -f origin/main # 强制同步远程分支

直接更新浅****克隆

适用于只想获取最新代码,不关心完整历史记录的情况:

# 进入仓库目录
cd apollo

# 1. 拉取远程最新更改(浅克隆需加 --depth=1)
git pull --depth=1 origin 8.0-dev

# 2. 如果提示 "fatal: refusing to merge unrelated histories"(历史不相关),强制拉取:
git pull origin 8.0-dev --allow-unrelated-histories

不推荐这种方式,因为是直接合并的,无法提前处理冲突。

git操作5.png

报错原因:本地分支和远程分支 origin/8.0-dev 出现了偏离(diverged),即它们的提交历史不再一致(可能是由于远程分支被强制推送过,或者在本地做了某些提交)。

解决方法:若不需要本地修改,只想同步最新版本

git fetch origin 8.0-dev
git reset --hard origin/8.0-dev

git操作6.png

查看修改记录

  1. 查看最近的提交记录
git log --oneline

这将显示最近的提交记录,每条记录包含提交哈希值和提交信息。

  1. 查看特定文件的修改历史

    1. git log -p -- filepath
      
    2. 替换 filepath 为您想查看的文件路径,例如:

    3. git log -p -- modules/planning/scenarios/scenario.h
      
  2. 查看最近的更改内容

  3. 如果您想查看最近的更改,可以使用以下命令:

    git diff HEAD
    

    这将显示当前工作区与最近一次提交之间的差异。

  4. 查看特定提交的更改

  5. 如果您从 git log 中找到了一条提交记录的哈希值(例如 abc123),可以查看该提交的更改内容:

    git show abc123
    

使用 VS Code 查看修改记录

  1. 打开 Source Control 面板(快捷键:Ctrl+Shift+G)。
  2. 点击文件旁边的更改图标,查看具体的修改内容。
  3. 如果启用了 Git 插件,可以右键文件并选择 View File History 查看历史记录。