GIT操作大全(个人开发与公司开发)

GIT下载:

【Git安装】Git安装流程和基础使用步骤(保姆级教程)_git安装教程-CSDN博客

Github+Git配置仓库:

git的系统配置-CSDN博客

【Git安装】Git安装流程和基础使用步骤(保姆级教程)_git安装教程-CSDN博客

Gitee+Git配置仓库:

gitee+git配置仓库_git配置gitee-CSDN博客

git工作流程图

本地仓库就是存放在你当前使用的电脑(或者你刚租的云服务器)硬盘上的一个隐藏文件夹(通常叫 .git。它就像是一个本地的超级数据库,完整记录了你这个项目从创建以来的所有历史版本、分支和修改记录。

vscode使用git可视化工具:

自使用版

1.新建一个文件夹

2.用vscode打开文件夹并初始化仓库(就自动生成.git文件夹)

3.然后就可以正常去增删改查了,注意commit是提交到本地仓库

4.在gitee中创建一个远程仓库,本地仓库进行关联:

5.推送版本到远程仓库

公司使用版:

一般公司都以及有主分支与develop分支了

  1. 新建一个文件夹,用vscode打开,选择克隆公司的项目,输入URL,回车即可

2.点击分支,点击orgin/dev分支,就会自动在你的本地创建一个dev分支

3.一般你的组长每次给你一个功能开发,我们都是对应新建一个功能分支,如功能a分支,这个时候,我们基于dev分支创建一个feature分支

  1. 现在我们就可以在feature上进行开发,增删改了

  2. 开发完了,我们就可以选择推送,但是在推送之前,我们一定要先拉取最新代码解决冲突。这里可以选择拉取feature的,也可以选择拉取dev的,主要看你们公司的最新代码更新在了哪里。一般来说dev里回包含feature的最新改动,所以一般拉取自dev

  1. 在合并编辑器中解决冲突代码
  1. 解决完之后就可以进行推送
  1. 推送完之后选择创建pr,等待主管检查,合并进入dev

  2. 如何公司的习惯是自己推送到dev,那就如下操作:

(1)先签出到dev分支:

(2)在dev为基上,合并feature分支;

(3)这个时候有可能需要解冲突

(4)同步更改到远程:

同步更改就是先拉取orgin/dev的最新代码然后合并你本地的dev,然后再一起推送到orgin/dev,中间可能需要解冲突


如何使用GIT解决常见工作场景

开发完了手贱多提交或者漏交了一个文件,想要撤销,重新提交:

  1. 在源代码管理面板,点击顶部的 ...

  2. 找到 "提交" (Commit) -> 点击 "撤销上次提交" (Undo Last Commit)

  3. 效果 :奇迹出现了!你刚刚那次错误提交直接"灰飞烟灭",但你写的代码一行都没有丢,它们完好无损地回到了输入框上方的"更改"列表里。

  4. 这时,你只需要把那个漏掉的 config.yaml 文件点一下 + ,加上你原来的那批代码,重新输入一次完美的提交信息,再次点击 "提交" 即可。

场景:"这行诡异的代码到底是谁写的?"

背景 :你发现 model.py 里有一行极其反人类的代码,没有注释,还导致了你的数据维度报错。你想知道这是哪位大神(或者是哪个同事)在什么时间、出于什么目的写的。

解决办法:

  • vscode自带绝招 :其实你只需要把鼠标光标点击到那行代码上 。注意看这行代码的最后面(或者 VS Code 的最底部状态栏),VS Code 会自动浮现一行浅灰色的字,比如 crj, 3个月前 • fix: 调整了图像输入的维度

  • 终极神器(强烈推荐安装) :在左侧扩展商店搜索并安装 GitLens 插件。装完之后,你的代码就像开启了"透视眼",每一行代码后面都会清清楚楚地跟着作者名字和当时提交的 Commit 记录。谁写的 Bug,一眼锁定,绝不背锅!

场景:走错房间------"糟糕,写嗨了,忘记切分支了!"

背景 :你一通操作猛如虎,写完了一个超酷的控制算法,并且开心地点击了"提交"(Commit)。突然你瞥了一眼左下角,冷汗下来了:你居然一直在受保护的 main(主分支)上操作!而公司规定新人只能在自己的 dev 分支上提交代码,main 分支是不允许随便 Push 的。

解决办法:

  • 第一步(拔出代码) :在源代码面板点击 ... -> "提交" -> "撤销上次提交" (Undo Last Commit) 。此时,你写好的代码全部从 main 分支的提交记录里退了出来,回到了"更改"列表(暂存区/工作区)里。

  • 第二步(带着代码跑路) :点击 VS Code 左下角那个写着 main 的分支名字。在弹出的搜索框里选择 "创建新分支" (Create new branch)依据 ,选择依据main分支创建新分支,命名为 dev 并回车。

  • 第三步(在新房间落户) :奇迹发生了,你刚才写好的那些代码,跟着你一起"穿越"到了新的 dev 分支上。现在,你可以安心地在 dev 分支下点击"提交"并 Push 了。main 分支依旧干干净净,仿佛你从没来过。

场景:重量级灾难------"不小心把 500MB 的模型权重点进去了,Push 直接卡死!"

背景 :你刚训练完一个端到端模型,生成了一个 500MB 的 best_model.pth 权重文件,或者下载了一个几个 G 的 CARLA 离线数据集。你习惯性地在 VS Code 里点了一下"全部暂存(+号)",然后一敲 Push......完了,GitHub 限制单文件不能超过 100MB,你的终端直接报错卡死,这辈子都 Push 不上去了。

解决办法

  1. 第一步(拿出来) :在左侧源代码管理面板,找到处于"暂存的更改"列表里的那个巨大的 .pth 或数据文件夹,点击它右侧的 "-"号(取消暂存 / Unstage Changes)。把它从准备提交的清单里退出来。

  2. 第二步(永久拉黑) :如果它还在"更改"列表里碍眼,鼠标右键 点击这个巨大的文件,在弹出的菜单里选择 "添加到 .gitignore" (Add to .gitignore)

  3. 效果 :VS Code 会自动帮你创建一个隐藏文件 .gitignore。从此以后,Git 就像瞎了一样,再也不会监控这个大文件了,你以后随便怎么点"全部暂存",它都不会被误传到云端。

场景九:时光机------"上周那一版还能跑通,我能穿越回去看一眼源码吗?"

背景:你昨天为了优化 TCP 的轨迹预测分支,大改了一通网络结构。结果今天一跑,Loss 直接爆炸。你极其怀念三天前那个虽然粗糙但至少能跑通的旧版本,你想把那时候的代码翻出来"抄"一下,但又不想破坏现在已经写好的新结构。

解法

  1. 自带绝招(时间线面板) :在 VS Code 最左侧点击第一个"资源管理器"图标(就是你平时看文件夹的那个)。在面板的最左下角 ,找到一个叫 "时间线" (Timeline) 的折叠栏,点开它。

  2. 效果 :当你选中任何一个文件(比如 model.py)时,时间线里会列出这个文件从古至今的每一次 Commit 记录!

  3. 对比与抄代码:点击时间线里的任何一个旧版本,VS Code 会直接弹出一个左右对比的窗口。左边是三天前的旧代码,右边是你现在写炸的新代码。你可以极其从容地把左边的正确代码复制,粘贴到右边救场。

场景十二:强迫症福音------"本地提了七八个琐碎的 Commit,推送到云端前想合并成一个"

背景:你在调参的时候,频繁提交了"改学习率"、"改 batch size"、"又改回去了"等一堆垃圾记录。你想在 Push 到 Gitee 或 GitHub 之前,把它们打包成一个干净的"优化模型参数"大提交。

解法("无赖"撤销流)

  1. 疯狂撤销 :利用我们之前学的绝招,连续点击 ... -> "提交" -> "撤销上次提交"。你有几个碎片的 Commit,就点几次!

  2. 一次成型 :点完之后,你会发现这些提交记录消失了,但所有的代码修改全部安全地回到了你的"更改"列表里

  3. 重新打包 :此时,你只需要把它们全部暂存(点 + 号),写上一个极其专业的宏观总结,然后点击一次 "提交"。七八个碎片瞬间被捏合成了一个完美的 Commit!

场景:举白旗------"合并冲突太多,我解着解着把自己看晕了,能重来吗?"

背景 :你拉取了实验室主仓库的最新代码,结果因为你和同事修改了同一堆底层文件,瞬间爆出了 20 多个红色 ! 的合并冲突。你硬着头皮点了半天"采用当前更改"和"采用传入更改",结果越改越乱,代码变成了连括号都对不上的缝合怪。你现在濒临崩溃,只想放弃这次合并。

VS Code 鼠标破解法(中止合并): Git 允许你随时"吃后悔药"。

  1. 一键终止 :直接按下 Ctrl+Shift+P 呼出命令面板,输入 Git: Abort Merge (Git: 中止合并) 并回车。

  2. 效果:世界瞬间恢复了宁静。所有那些红色的冲突文件、你刚刚瞎点的修改全部被一键清空。你的本地代码直接弹回了你点击 Pull 之前的完美状态。你可以喝口水,理清思路,晚点再重新拉取解决。

场景十八:"我想把我写的这几个功能单独剥离出来发给导师看"

背景 :你最近在自己的 dev 分支里做了很多激进的算法测试,代码很乱。导师突然发消息,说想看一眼你上周汇报的那个"纯跟踪(Pure Pursuit)轨迹追踪"的阶段性成果。你绝对不能把你现在这个烂摊子分支推给他看。

VS Code 鼠标破解法(从历史节点开辟新宇宙)

  1. 寻找高光时刻:从git图形中找到上周那个"纯跟踪算法初步跑通"的完美 Commit。

  2. 时空分裂 :在这个 Commit 上点击鼠标右键 ,选择 "创建分支..." (Create Branch...)

  3. 独立打包 :给新分支起名叫 pure-pursuit-demo

  4. 效果 :你瞬间切到了一个全新的分支里,这里的代码停留在上周最完美的那一刻。你可以直接把这个干净的分支 Push 到 Gitee 上发给导师,而你原本 dev 分支里的烂摊子丝毫不会受到影响。

场景二十一:金蝉脱壳------"同时在调控制和感知模块,要给别人看控制效果,感知代码怎么藏?"

背景 :你本地的工作区里同时躺着改了一半的控制模块 control.py 和感知模块 perception.py。有人突然要看你跑一下控制模块的仿真。但感知模块的代码目前千疮百孔,连括号都没闭合,一旦强行运行,全局都会报错。你需要立刻把感知的烂代码"变没",且绝对不能影响已经写好的控制模块。 VS Code 鼠标破解法(选择性储藏)

  1. 筛选保底 :把你确定要展示的 control.py 点击右侧的 +,放入"暂存的更改"列表。

  2. 隐藏其余 :点击面板顶部的 ... -> 找到 "储藏" (Stash) -> 点击 "储藏未暂存的更改" (Stash Unstaged)

  3. 效果 :留在暂存区外面的 perception.py 瞬间恢复原状(写了一半的烂代码被打包塞进隐形柜子里了),而你暂存的控制代码依然完美在线。跑完完美的演示后,再用我们之前学的"弹出最新的储藏",把感知代码释放出来继续修补。

相关推荐
Sarapines Programmer2 小时前
【Docker】Windows 安装 Docker 简明指南
运维·docker·容器
XiYang-DING2 小时前
【Java SE】var关键字
java·开发语言
还是大剑师兰特2 小时前
将 Utils.js 挂载为全局(window.Utils.xx)完整配置方案
开发语言·javascript·ecmascript
.YM.Z2 小时前
C++入门——缺省参数,函数重载,引用,inline函数,nullptr的介绍和使用
开发语言·c++
ulias2123 小时前
智能指针简述
开发语言·c++·算法
寻寻觅觅☆3 小时前
东华OJ-基础题-58-素数表(C++)
开发语言·c++·算法
专心搞代码3 小时前
【大模型开发】python基础(二)
开发语言·python
咸鱼2.03 小时前
【java入门到放弃】Session和JWT
java·开发语言
Ama_tor3 小时前
将本地的 Electron 项目上传到 Gitee(码云)的 Git 操作流程
git·electron·gitee