在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"
把它传入命令行,然后命令行会输出公钥和私钥(点击命令行里面蹦出的链接可以查看,也可以在电脑中找相应位置查看⚒):
公钥public key需要上传到Gitee/Github(作者当时的意思是别人想复现你的项目是需要公钥的;还有就是公钥和你电脑上面的私钥可以达成一个匹配,让你的电脑可以直接跑起你的项目):
Git
🍎项目的开启方式
首先讲一个我们一般不用的:git init,它常用于白手起家,可以生成一个用Git管理的仓库
然后再讲我们平常可能会用到的,比如把云端的仓库拿去到本地:
1.找到我们要克隆的仓库,然后“git clone”⚒
⭐注意如果代码库比较大,可以设置clone的深度,比如“git clone git@gitee.com:wang-66/diff-power.git --depth 10”(10也可以改为100,也就是克隆最新的10次/100次提交的结果)
2.把这行粘贴到自己选择的项目文件夹中:⚒
可以进入这个仓库里面:
进去后终端展示如下:
🍐分支切换方式
那在我们进入项目后,怎么快捷切换分支呢?⚒
首先下载插件Git Graph
然后点击下面的“DACER”按钮,会发现出现超多远程分支:
里面的
是本地分支。如果你想用远程分支,就可以直接点击
,它就会把远程分支直接变为你的本地分支
,我们就可以在这个分支上进行之后的操作。
🍑公司项目可能的坑
如果是公司的大型项目,这边会有两个坑:
【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名字
我们在终端运行了这两行代码后,点击
,可以发现修改的内容与时间
点击下图中右边的部分,
还能清楚看到修改的部分是啥:
(图里左面是旧的右面是新的)
🍋主分支上新建分支
如果师兄把代码给你,你显然不能直接在这个新的分支上面改,那么你就可以创造一个本地的新分支:
git checkout -b happy/0817_test
运行代码:
可以看到右下角即为我们新建的分支,这个分支完全克隆了刚刚的那个分支。
另外,还能发现我们本地的分支里面多了一个分支(我们刚刚的那个分支):
然后我们接下来进行的所有更改,就在新分支上进行就好啦!这也不会影响到主分支的进程❀
🍧某次提交的基础上新建分支
那可以点击这次的提交
接着右键它
点击check out,你会发现左下角变成了一串字符串
,
那么在这个字符串的基础上,我们再去运行
git checkout -b happy/0817_test2
⭐我们在test后面加了2
就会发现又生成了一个新分支
,然后你会发现这边
也提醒你出现了一个新分支~
🍍修改内容的提交
我们修改代码的话,怎么去记录(提交)呀?⚒
首先,你修改代码的话这行左边会标绿,然后这个文件的右边会显示“M”。
接着,如果你看树的分支,还会发现:
这边有“暂存的更改”和“更改”两个夹层,“更改”里面的文件比较新。如果你一个文件夹先后修改了两次,可以先点”更改“后面的那个加号,就是先暂存第一个更改,同理,再暂存第二个更改,两个都暂存后,你会发现它们合并为了一个文件。
插一句:"git add XXX.py"可以新建文件,但是实际上你在vscode上面直接建也OK
建议改完一个功能再提交,具体为:
如图,就可以带着功能题目一起提交~
另外,这时你点下面的
,就可以发现我们新加了一个提交:
然后点击这个文件,
就能看到修改后的代码对比。
插一句,提交更改也有对应的代码,但是我们不常用:
git commit -m "[planner]: add st boundary pre decider test"
本地提交上云
但是我们上面做的操作都来自本地端:
(或者看
也能知道是本地的.)现在我们想把它传到远程上去,那就可以”git push“:
但是你会发现报错:原因是你是第一次把你本地的一个分支push到远端,需要用下面这个更复杂的"git..."代码.
但是还有一个更简单的方法,可以直接点击下图的"发布Branch"
接着你就会发现:
远程就多出了这样一个测试分支~
🍉提交的撤回&改后的强制提交
首先教大家发现自己提交内容有错的回退方法:⚒
git reset --soft HEAD^ #(想回退一个就敲一次,回退两个就敲两次)
意思是:我把上次的提交回退了.
运行完这个命令,你会发现我们提交的东西回到了"暂存的更改"里面:
然后我们点小减号,就会发现,"暂存的更改"下了一级,到了"更改"里面
接着我们再点撤回的小箭头"放弃更改"
改后的强制提交
然后,如果我们现在还想改点新的,我们就直接改代码,然后想原来那样对"更改"点"+",变为"暂存的更改",然后把"暂存的更改"来"提交"了
但是你此时会发现报错:
此时你可以在命令行直接"git push -f"强制提交!⚒(然后就完美避开了”同步更改“点击报错的问题)
再点”Git graph“,就会发现上一个提交没啦!取而代之的是我们新的提交~
🍅远程仓库切换
git remote -v
会列出我们现在对应的是哪个远程仓库,先再命令行输入进行查看
接着我们来尝试切换到另一个远程仓库:
git remote add origin2 git@gitee.com:wang-66/altc.git
(注意是origin2不是origin)
然后你再"git remote -v"会发现我们有两个远程分支
但是我们现在还没有进行里面代码内容的提取:
git fetch origin2 --depth 10
这样我们就把第二个分支的内容搞下来啦!
可以发现上图这边多了很多关于第二个分支的内容~
🍊分支合并
先举个例子,说明下”怎么把你修改的分支合到主分支上:
- 切换到目标分支,比如
main。 - 运行
git merge feature-branch,Git会将feature-branch分支的更改合并到当前分支。 - 如果没有冲突,Git 会自动创建一个合并提交。
- 如果有冲突,Git 会暂停合并,提示我解决这些冲突。
- 解决完冲突后,我需要再次提交以完成合并。
⭐其实我们上一步进行的是:
![]()
操作,所以我们现在其实在vinuo...分支里面
所以我们运行
这步,就会发现Graph里面
就有如上的图案,还有很明显就发现多了"import torch"这行
接着再点击"同步更改"就OK啦!
难点说明
git merge 示意图
git rebase 示意图
(重点看这个里面右边那个)
区别说明
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>
比如说,我们想把
"上一版loss不对"引到"happy/0817_test2里面;
那么我们首先需要把窗口切到test2分支中
然后我们找"上一版loss不对"的哈希值
然后点进去,复制
这行,然后运行
你会发现:
好神奇!
TMUX
这个是为了防止你把终端关闭后程序运行停止哒!(怎么把代码挂在服务器上,不用担心vscode关闭导致代码不跑啦)
首先,为你的服务器安上tmux ⚒
apt-get install tmux
接着我们为服务器端创建:
tmux是默认创建,tumx new -s xxx,就是我们创建了一个名字为xxx的终端
eg,我们创建了一个名为hhh的一个终端:
为了证明创建成功,可以点下这个加号"+",就会发现:
这个新终端就会被留在这个里面,就算在这里关掉也不会有影响:
eg.(关于关掉后的找回)我们把刚刚建立的终端关掉,又打开了一个。那我们怎么找回刚刚的终端呢?
输入tumx ls⚒
你会看到叫“hhh”的终端仍然存在!
Q:那么我们怎么回到这个终端呢?
A:tmux attach -t hhh 就又回来啦!
Q:那么我们怎么删除这个终端呢?
A:直接输入exit,这个终端就消失啦! 其实我们还有办法删除指定终端,就是tmux kill-session -t xxx,如果你想删掉所有的tmux终端,那么你可以tmux kill-server。
🌰Tmux默认空挡处理
我们怎么处理每次tmux创建都是base环境的情况呢?
那么我们可以 “文件”-“打开文件”,然后进入主目录,点开文件".bashrc"
在最后一行加一个命令:
然后我们先保存文件,命令行输入"source ~/.bashrc"
那这个命令有什么作用呢?
source命令的作用是在当前 shell 环境中执行某个脚本文件,而不是打开一个新的 shell。因此,source ~/.bashrc的作用是让当前 shell 重新读取并执行.bashrc文件中的配置,使这些配置立即生效,而不是等到重新打开终端。所以,
source ~/.bashrc的意义是 在当前 shell 环境中重新加载.bashrc配置文件,而不是保存文件。
接下来我们点+(“+”后来感觉可以实现暂存这个终端或改变下排布方式的作用)
于终端输入tmux,可以发现激活的环境不是base,而是gops啦!
o(=•ェ•=)m下集大家是想看毕设实验还是latex使用踩坑指南呢?
是毕业设计/跑实验前必须学习的部分哦!Git部分超级实用的!🌠
浙公网安备 33010602011771号