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
- 生成 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]-----+
- 查看公钥
生成密钥后,使用以下命令查看公钥内容:
cat ~/.ssh/id_ed25519.pub
输出如下,复制整个输出的内容
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com
- 将公钥添加到 GitHub
- 登录 GitHub 账户。
- 点击右上角的头像,选择 Settings。
- 在左侧菜单中,选择 SSH and GPG keys。
- 点击 New SSH key 按钮。
- 在 Title 字段中,为这个密钥添加一个描述性的标题(例如 "My Laptop SSH Key")。
- 在 Key 字段中,粘贴你之前复制的公钥内容。
- 点击 Add SSH key 按钮。
- 测试 SSH 连接
为了确保 SSH 密钥配置正确,测试一下与 GitHub 的连接:
ssh -T git@github.com
如果一切正常,会看到类似以下的输出:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
ssh 配置完成
Windows平台
安装步骤
- 从Git官网下载对应版本安装包(32位/64位)
- 按向导完成安装(默认选项即可)
基础配置
打开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 配置正确,可以继续
- 本地创建新分支: git branch [分支名称]
例如:git branch plateform2
- 切换到新分支: git checkout [分支名称]
例如:git checkout2
- 创建+切换分支: git checkout -b [分支名称]
例如:git checkout -b plateform2
其中:git checkout -b [分支名称]相当于两步
git branch [分支名称]
git checkout [分支名称]
- 添加本地需要提交的代码: git add . (. 表示添加全部文件)
例如:git add whl_logmap/map_gen.py
- 提交本地代码: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
报错修改
使用 ssh -T git@github.com检测连接没有问题
可能是项目读写权限没有被正确设置,或项目对创建分支有保护
合并分支与解决冲突
- 合并分支并出现冲突
git merge [分支名称]
两个分支修改了同一文件的相同位置,则会出现冲突警告
Auto-merging [要 merge 的文件名]
CONFLICT (content): Merge conflict in [要 merge 的文件名]
Automatic merge failed; fix conflicts and then commit the result.
- 在编辑器中查看冲突文件
在冲突文件中,Git 会用<<<<<<<
、=======
和>>>>>>>
标记冲突区域
- 手动解决冲突
- 标记冲突已解决并完成合并
git add [要 merge 的文件名]
git commit -m "合并xxxx分支,解决冲突"
- 删除已合并的分支 (可选)
git branch -d feature-vector
将仓库的最新版本同步到本地
从远程仓库拉取最新更改
使用 git pull
命令从远程仓库(GitHub)获取最新更改并合并到本地分支:
git pull origin main
或
git pull origin master
origin
是默认的远程仓库名称(即你克隆的仓库)。main
或master
是分支名称,根据仓库实际情况选择。
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
不推荐这种方式,因为是直接合并的,无法提前处理冲突。
报错原因:本地分支和远程分支 origin/8.0-dev
出现了偏离(diverged),即它们的提交历史不再一致(可能是由于远程分支被强制推送过,或者在本地做了某些提交)。
解决方法:若不需要本地修改,只想同步最新版本
git fetch origin 8.0-dev
git reset --hard origin/8.0-dev
查看修改记录
- 查看最近的提交记录:
git log --oneline
这将显示最近的提交记录,每条记录包含提交哈希值和提交信息。
-
查看特定文件的修改历史:
-
git log -p -- filepath
-
替换
filepath
为您想查看的文件路径,例如: -
git log -p -- modules/planning/scenarios/scenario.h
-
-
查看最近的更改内容:
-
如果您想查看最近的更改,可以使用以下命令:
git diff HEAD
这将显示当前工作区与最近一次提交之间的差异。
-
查看特定提交的更改:
-
如果您从
git log
中找到了一条提交记录的哈希值(例如abc123
),可以查看该提交的更改内容:git show abc123
使用 VS Code 查看修改记录
- 打开 Source Control 面板(快捷键:
Ctrl+Shift+G
)。 - 点击文件旁边的更改图标,查看具体的修改内容。
- 如果启用了 Git 插件,可以右键文件并选择 View File History 查看历史记录。