HYLOVEYOURSELF

小洋宝的进步史

导航

在Vscode上的SSH+Git+Gitee+Tmux实践篇💪

SSH+Git+Gitee+Vscode+Tmux

写这个的初衷是记录下毕设沿途学到的一些东西🐱

学这些内容也是因为这是我第一次用本地服务器跑代码😳,感觉自己应该提前准备下

参考视频:【研1基本功 别人不教的,那就我来】SSH+Git+Gitee+Vscode 学会了就是代码管理大师_哔哩哔哩_bilibili

笔记整理者:博客园-岁月月宝贝

笔记整理按照作者讲解的时间顺序,如果我有实际操作并且成功的会在上面标注⚒!

SSH

首先,我们试着生成下一个名为“happy-yan”的rsa密钥:

ssh-keygen -t rsa -b 4096 -C "happy-yan"

把它传入命令行,然后命令行会输出公钥和私钥(点击命令行里面蹦出的链接可以查看,也可以在电脑中找相应位置查看⚒):

image-20250222100210742

公钥public key需要上传到Gitee/Github(作者当时的意思是别人想复现你的项目是需要公钥的;还有就是公钥和你电脑上面的私钥可以达成一个匹配,让你的电脑可以直接跑起你的项目):

image-20250222100342590

Git

🍎项目的开启方式

首先讲一个我们一般不用的:git init,它常用于白手起家,可以生成一个用Git管理的仓库

然后再讲我们平常可能会用到的,比如把云端的仓库拿去到本地:

1.找到我们要克隆的仓库,然后“git clone”⚒

image-20250222100700163

⭐注意如果代码库比较大,可以设置clone的深度,比如“git clone git@gitee.com:wang-66/diff-power.git --depth 10”(10也可以改为100,也就是克隆最新的10次/100次提交的结果)

2.把这行粘贴到自己选择的项目文件夹中:⚒

image-20250222100940009

可以进入这个仓库里面:

image-20250222101215767

进去后终端展示如下:

image-20250222102009024

🍐分支切换方式

那在我们进入项目后,怎么快捷切换分支呢?⚒

首先下载插件Git Graph

image-20250222102120424

然后点击下面的“DACER”按钮,会发现出现超多远程分支:

image-20250222102256351

里面的image-20250222102325172是本地分支。如果你想用远程分支,就可以直接点击image-20250222102514907,它就会把远程分支直接变为你的本地分支image-20250222102637332,我们就可以在这个分支上进行之后的操作。

🍑公司项目可能的坑

如果是公司的大型项目,这边会有两个坑:

【1】是子模块的更新:

git submodule update --init --recursive 

对于一些很久的分支,需要用它更新下子模块

【2】查看你当前的分支,有无没有被track的子模块⚒

git status

如果发现没有被track的子模块,可能需要想办法添加到track中

🍓配置全局Git&每次提交修改查看

在使用 Git 进行版本控制时,每次提交都会记录提交者的名称和邮箱信息。

git config --global user.email 'hhh'

配置了全局的 Git 用户邮箱,指定用户用于提交的邮箱地址为 'hhh'

git config --global user.name "happy-yan"

配置了全局的git名字

我们在终端运行了这两行代码后,点击image-20250222103746405,可以发现修改的内容与时间

image-20250222103827875

点击下图中右边的部分,

image-20250222103922598

还能清楚看到修改的部分是啥:

image-20250222104008350

(图里左面是旧的右面是新的)

🍋主分支上新建分支

如果师兄把代码给你,你显然不能直接在这个新的分支上面改,那么你就可以创造一个本地的新分支:

git checkout -b happy/0817_test

运行代码:

image-20250222104505450

可以看到右下角即为我们新建的分支,这个分支完全克隆了刚刚的那个分支。

另外,还能发现我们本地的分支里面多了一个分支(我们刚刚的那个分支):

image-20250222104709136

然后我们接下来进行的所有更改,就在新分支上进行就好啦!这也不会影响到主分支的进程❀

🍧某次提交的基础上新建分支

那可以点击这次的提交

image-20250222111725061

接着右键它

image-20250222112059249

点击check out,你会发现左下角变成了一串字符串image-20250222112152888,

那么在这个字符串的基础上,我们再去运行

git checkout -b happy/0817_test2

⭐我们在test后面加了2

image-20250222112353982

就会发现又生成了一个新分支image-20250222112450240,然后你会发现这边

image-20250222112557828

也提醒你出现了一个新分支~

🍍修改内容的提交

我们修改代码的话,怎么去记录(提交)呀?⚒

image-20250222105048903

首先,你修改代码的话这行左边会标绿,然后这个文件的右边会显示“M”。

接着,如果你看树的分支,还会发现:

image-20250222105215277

这边有“暂存的更改”和“更改”两个夹层,“更改”里面的文件比较新。如果你一个文件夹先后修改了两次,可以先点”更改“后面的那个加号,就是先暂存第一个更改,同理,再暂存第二个更改,两个都暂存后,你会发现它们合并为了一个文件。

插一句:"git add XXX.py"可以新建文件,但是实际上你在vscode上面直接建也OK

建议改完一个功能再提交,具体为:

image-20250222105842250

如图,就可以带着功能题目一起提交~

另外,这时你点下面的image-20250222110035575,就可以发现我们新加了一个提交:

image-20250222110101317

然后点击这个文件,

image-20250222110131750

就能看到修改后的代码对比。

插一句,提交更改也有对应的代码,但是我们不常用:

git commit -m "[planner]: add st boundary pre decider test"

本地提交上云

但是我们上面做的操作都来自本地端:image-20250222110451048(或者看image-20250222110543386也能知道是本地的.)现在我们想把它传到远程上去,那就可以”git push“:

image-20250222110735148

但是你会发现报错:原因是你是第一次把你本地的一个分支push到远端,需要用下面这个更复杂的"git..."代码.

但是还有一个更简单的方法,可以直接点击下图的"发布Branch"

image-20250222111013700

接着你就会发现:

image-20250222111116138

远程就多出了这样一个测试分支~

🍉提交的撤回&改后的强制提交

首先教大家发现自己提交内容有错的回退方法:⚒

git reset --soft HEAD^ #(想回退一个就敲一次,回退两个就敲两次)

意思是:我把上次的提交回退了.

运行完这个命令,你会发现我们提交的东西回到了"暂存的更改"里面:

image-20250222125959323

然后我们点小减号,就会发现,"暂存的更改"下了一级,到了"更改"里面

image-20250222130247304

接着我们再点撤回的小箭头"放弃更改"

改后的强制提交

然后,如果我们现在还想改点新的,我们就直接改代码,然后想原来那样对"更改"点"+",变为"暂存的更改",然后把"暂存的更改"来"提交"了

image-20250222130607724

但是你此时会发现报错:

image-20250222130651040

此时你可以在命令行直接"git push -f"强制提交!⚒(然后就完美避开了”同步更改“点击报错的问题)

再点”Git graph“,就会发现上一个提交没啦!取而代之的是我们新的提交~

image-20250222131013233

🍅远程仓库切换

git remote -v 

会列出我们现在对应的是哪个远程仓库,先再命令行输入进行查看

image-20250222140914609

接着我们来尝试切换到另一个远程仓库:

git remote add origin2 git@gitee.com:wang-66/altc.git

(注意是origin2不是origin)

然后你再"git remote -v"会发现我们有两个远程分支

image-20250222140914609

但是我们现在还没有进行里面代码内容的提取:

git fetch origin2 --depth 10

这样我们就把第二个分支的内容搞下来啦!

image-20250222141237509

可以发现上图这边多了很多关于第二个分支的内容~

🍊分支合并

先举个例子,说明下”怎么把你修改的分支合到主分支上:

  • 切换到目标分支,比如 main
  • 运行 git merge feature-branch,Git会将feature-branch分支的更改合并到当前分支。
  • 如果没有冲突,Git 会自动创建一个合并提交。
  • 如果有冲突,Git 会暂停合并,提示我解决这些冲突。
  • 解决完冲突后,我需要再次提交以完成合并。

⭐其实我们上一步进行的是:

image-20250222142856994

操作,所以我们现在其实在vinuo...分支里面

所以我们运行

image-20250222142950775

这步,就会发现Graph里面

image-20250222143105339

就有如上的图案,还有很明显就发现多了"import torch"这行

image-20250222143517052

接着再点击"同步更改"就OK啦!

难点说明

git merge 示意图

image-20250222143811750

git rebase 示意图

image-20250222145100924

(重点看这个里面右边那个)

区别说明

git merge 是把两个分支的历史合并在一起,而 git rebase 则是把一个分支的更改应用到另一个分支的顶端,保持历史的线性。具体来说,当你在 feature-branch 上运行 git rebase main 时,Git 会把 main 分支上的所有提交应用到 feature-branch 上,然后把 feature-branch 上的每个提交逐一重新应用到新的 main 分支的顶端。如果遇到冲突,Git 会暂停 rebase 操作,提示你手动解决冲突,解决后运行 git rebase --continue 继续 rebase 过程。这样,feature-branch 的历史看起来就像是直接基于最新的 main 分支,而不是有一个分支点。

🍈把A分支的提交加入B分支

假如我们想把某个分支的特定提交加入到我们的分支中,那么我们可以先进入到你自己的仓库中,再进行哈希值引入!

git cherry-pick <commit_hash>

比如说,我们想把

image-20250222150121636

"上一版loss不对"引到"happy/0817_test2里面;

那么我们首先需要把窗口切到test2分支中

image-20250222150341919

然后我们找"上一版loss不对"的哈希值

image-20250222150447287

然后点进去,复制

image-20250222150548846

这行,然后运行

image-20250222150638881

你会发现:

image-20250222150825075

好神奇!

TMUX

这个是为了防止你把终端关闭后程序运行停止哒!(怎么把代码挂在服务器上,不用担心vscode关闭导致代码不跑啦)

首先,为你的服务器安上tmux ⚒

apt-get install tmux

接着我们为服务器端创建:

tmux是默认创建,tumx new -s xxx,就是我们创建了一个名字为xxx的终端

eg,我们创建了一个名为hhh的一个终端:

image-20250222152300401

为了证明创建成功,可以点下这个加号"+",就会发现:

image-20250222152408269

这个新终端就会被留在这个里面,就算在这里关掉也不会有影响:

image-20250222152551675

eg.(关于关掉后的找回)我们把刚刚建立的终端关掉,又打开了一个。那我们怎么找回刚刚的终端呢?

image-20250222152731970

输入tumx ls

image-20250222153135777

你会看到叫“hhh”的终端仍然存在!

Q:那么我们怎么回到这个终端呢?

A:tmux attach -t hhh 就又回来啦!

Q:那么我们怎么删除这个终端呢?

A:直接输入exit,这个终端就消失啦! 其实我们还有办法删除指定终端,就是tmux kill-session -t xxx,如果你想删掉所有的tmux终端,那么你可以tmux kill-server

🌰Tmux默认空挡处理

我们怎么处理每次tmux创建都是base环境的情况呢?

image-20250222153749977

那么我们可以 “文件”-“打开文件”,然后进入主目录,点开文件".bashrc"

image-20250222153931294

在最后一行加一个命令:

image-20250222154208080

然后我们先保存文件,命令行输入"source ~/.bashrc"

那这个命令有什么作用呢?

source 命令的作用是在当前 shell 环境中执行某个脚本文件,而不是打开一个新的 shell。因此,source ~/.bashrc 的作用是让当前 shell 重新读取并执行 .bashrc 文件中的配置,使这些配置立即生效,而不是等到重新打开终端。

所以,source ~/.bashrc 的意义是 在当前 shell 环境中重新加载 .bashrc 配置文件,而不是保存文件。

接下来我们点+(“+”后来感觉可以实现暂存这个终端或改变下排布方式的作用)

image-20250222154652021

于终端输入tmux,可以发现激活的环境不是base,而是gops啦!

image-20250222154806737

o(=•ェ•=)m下集大家是想看毕设实验还是latex使用踩坑指南呢?

posted on 2025-05-08 15:58  岁月月宝贝  阅读(374)  评论(3)    收藏  举报