git操作1
git创建分支
step 1:克隆仓库到本地
命令:git clone git@192.168.2.67:slam_3d_lib/camera_calibration.git
这会创建一个名为 camera_calibration 的文件夹。
step 2: 查看所有分支
cd camera_calibration git branch -a
1 | * master |
其中*master就是说明你正处于这个分支。
remotes/origin/HEAD -> origin/master就是说明
如果还是怀疑有人创建了新的分支,可以执行下面命令:
git fetch --all
git branch -a
注:它会把远程仓库的所有分支信息、最新的提交记录(commit)下载到你的本地数据库中。
注意:它非常安全! 它只下载数据,不会自动合并到你正在写的代码里,也不会修改你本地的任何文件。
step3 : 创建并切换到新分支
git checkout -b <你的新分支名字>
提示: 如果你想基于远程的某个特定分支(比如 develop)创建新分支,可以先切换到那个分支,或者使用 git checkout -b <新分支名> origin/develop。
切换分支:git checkout 分支名 # 或者(新版本推荐) git switch 分支名
情况 A:普通删除(安全模式)
如果这个分支的代码已经合并到了 master,或者你没写任何代码,使用:
Bash
1 | git branch -d 分支名 |
注:-d 是 --delete 的缩写。
情况 B:强制删除(暴力模式)
如果你在新分支上写了代码,但现在不想要了,直接用 -d 会报错(Git 会提醒你代码还没合并)。这时需要强制删除:
Bash
1 | git branch -D 分支名 |
注:-D(大写)会直接抹掉该分支,慎用,因为没合并的代码会丢失。
保住我当前分支写的进度,同时把主分支(master)别人的更新合并过来”
注:方法一:先提交(Commit),再合并(Merge)
Step 1: 保存你当前的代码
先确认你在你自己的分支:
1 | git status |
其中,注意不能仓库里面套仓库
解释:这一步相当于给你的代码拍了个快照。只要 commit 了,代码就永久保存在本地 Git 历史里了,绝对不会丢。
Step 2: 切换回主分支并更新
把你自己的代码存好后,现在去把主分支(master)的最新代码拉下来:
Bash
1 | git checkout master |
解释:这一步保证你的本地
master分支是最新的。注意:这不会影响你刚才在dev-zhrp分支写的代码。
Step 3: 切回你的分支,把主分支“合”过来
现在回到你的地盘,把刚才更新好的 master 内容合并进来:
Bash
1 | git checkout <你的新分支名字> |
解释:这行命令的意思是:“我站在我自己的分支上,把 master 的新东西拿过来”
Step 4: 处理冲突(如果有)
- 顺利的情况:Git 会自动合并,提示
Merge made by the 'recursive' strategy,你现在的代码既有你写的,也有 master 最新的。 - 冲突的情况:如果 master 改了某行代码,你也改了同一行,Git 会停下来告诉你
CONFLICT。- 打开报错的文件。
- 你会看到
<<<<<<< HEAD和>>>>>>> master的标记。 - 手动修改代码,保留你想要的。
- 改完后执行:
git add .然后git commit。
在实际开发中,原本的 git log 信息太长了,我们通常会配合参数使用,让它更人性化:
基础版:
git log- 场景:查看详细的历史记录。
- 效果:显示完整的作者、日期、提交哈希值和注释。适合需要仔细查阅某次提交细节时使用。
精简版:
git log --oneline(强推!)场景:你想快速浏览最近干了啥,不想看废话。
效果:把每一次提交压缩成一行。
例子:
Plaintext
1
2
3a1b2c3d 修复了红外相机采集的bug
e5f6g7h 增加了RGB相机的配置文件
i8j9k0l 初始化项目博主提示:这是老手最爱用的命令,清爽直观。
透视版:
git log origin/master(配合 fetch 使用)- 场景:配合
git fetch使用。 - 效果:查看远程仓库(别人)提交了什么,但还没合并到你本地的代码。
- 比喻:这就是在不拆快递的情况下,透过X光看包裹里的“发货清单”。
- 场景:配合
回退代码:
第一步:找到“存档 ID” (Commit ID)
每一个提交(Commit)都有一个身份证号,叫 Commit ID(也叫 SHA-1 哈希值)。
操作命令:
Bash
1 | git log --oneline |
输出示例:
Plaintext
1 | a1b2c3d (HEAD -> master) 删除了无用的注释 <-- 最新的存档 |
- 解释:最前面那串黄色的乱码(如
i8j9k0l)就是 Commit ID。 - 技巧:通常只需要复制前 7 位就够了,Git 能认出来。
第二步:回退版本(两种方式)
找到 ID 后,你有两种方式“穿越时空”。
方式一:暴力回退 (git reset) —— “读档重来”
这是最彻底的回退。你告诉 Git:“忘掉过去吧,我要回到那个时候。”
命令:
Bash
1
2# 比如你想回到 "增加了RGB配置文件" 那个状态
git reset --hard i8j9k0l后果:
i8j9k0l之后的所有提交记录(修复bug、删除注释)会全部消失。- 你的代码文件也会瞬间变回那时的样子。
适用场景:你刚写的一堆代码完全写烂了,想彻底不要了,重头再来。
警告:慎用! 如果你已经把代码推送到远程服务器了,千万别用这个,否则会坑死同事。
方式二:优雅撤销 (git revert) —— “负荆请罪”
这是更安全的回退方式。你不是“删除”历史,而是“新增”一条历史来抵消之前的错误。
命令:
Bash
1
2# 撤销 "修复红外相机bug" 这一次提交
git revert e5f6g7h后果:
- Git 会自动生成一个新的 Commit,内容是把那次修改反着做一遍(你删了它就加,你加了它就删)。
- 历史记录不会丢失,而是多了一条“Revert …”的记录。
适用场景:代码已经推送到远程服务器了,或者你只想撤销中间的某一次修改,但保留后续的工作。
如果你的同事更新了某个分支(比如叫 feature-A),你需要把这些更新“拉”到你电脑上,只需要两步。
核心步骤
第一步:切换到那个分支
先确保你人站在那个分支上。
Bash
1 | git checkout feature-A |
第二步:拉取更新
直接执行拉取命令。
Bash
1 | git pull origin feature-A |
origin:指远程仓库。feature-A:指你要拉取的具体分支名。- 简写:如果你已经在这个分支上了,通常直接输入
git pull也是可以的,Git 会自动知道你要拉取当前分支的更新。