git配置私有仓库,用于在堡垒机间接传递修改

前言

最近用的服务器加了一个堡垒机,不能直接用ssh访问(所有相关的都不行,比如vscode、pycharm巴拉巴拉),同时服务器也没办法访问GitHub。但是这些实验在我的破笔记本又跑不起来,无奈之下只好暂时掏出之前玩饥荒买的服务器,来暂时做git的仓库。在实际使用时期望的步骤是:

  1. 本地vscode修改代码,然后直接commit&push到远程仓库中
  2. 服务器从远程仓库pull,然后通过cmd运行

tips: 其实不一定要一个服务器作为仓库,因为是只有自己在用,在本地开一个远程仓库也是可以的(搭完才发现)。

步骤

Git下载和安装

对于本地的windows,我参考了mukes在博客中的描述。不过他的介绍有点长,嫌麻烦可以按照这个步骤简化一下:

  1. 在这里下载Git for windows的安装包:git-scm.com
  2. 一路默认设置(特别是有红色字体的部分,强烈建议默认设置)

仓库服务器B和要跑实验的服务器A都要安装git,参考了git社区文档(以ubuntu为例):

sudo apt install git-all

特别地,对于仓库服务器,我们最好开一个新的账户用于保存.git文件(别给root权限)。假设在root中:

# 在创建账户的过程中,我们为git设置了一个主目录,就放在/home/git吧
adduser git

配置git仓库

对于每一个刚刚安装的git,我们需要先进行一些初步的配置:

git config --golbal user.name "myname"
git config --golbal user.email "myemail"
# 修改文本编辑器,默认为vim(非必要)
git config --golbal core.editor vim

假设我们在用于跑代码的服务器A已经有一个project,我们可以先生成一个裸仓库:

# 进入到对应的project
cd my_project
# 初始化一个仓库
git init
# git add用于添加需要更新的文件,如果有数据集等请避免跟踪那些文件
# 有一个文件可以管理不跟踪文件的模式
# but我的数据集是分离的所以没有认真研究
git add .
# 查看相对于初始化仓库时的暂存修改
git status
# 提交修改到仓库中
git commit -m 'initial project version'

前面已经为project建立了一个仓库,现在我们想要把这个仓库克隆到服务器中。如果22或者443端口出入站都是没问题的,那我们直接使用clone就可以啦。eg,在用于保存代码的中转服务器B中:

mkdir /home/git
cd /home/git
git clone user@A:/.../.../myproject

但是我就是因为22端口不能入站才选择用git的,相同情况的话我们要在A中设置一个裸仓库:

cd /.../.../myproject
git init --bare myproject.git
# 通过scp将裸仓库复制到仓库服务器B中
scp myproject.git git@B:/home/git

B必须要有公网ip。我们可以将B上裸仓库clone到本地:

git clone git@B:/home/git/myproject.git

这样一来,服务器A、B和本地都有了一个相同的副本,我们就可以以B为桥梁,开心(非)实验了。

Git的一些基本操作

先说一下,Git管理文件时,文件状态的变化情况:文件生命周期
一个通过git init的目录下的所有文件,一开始都是属于untracked状态的。处于untracked和modified状态的文件想要提交都需要经历一个staged的状态。而所有staged的文件在提交之后都会变成unmodified的状态。我们在本地修改和提交的时候,最经常经历的情况就是:

  1. 新建文件
  2. 修改或删除文件

无论哪一种情况,我们都可以通过git add "file or folder"的命令来将对应的修改放到staged区(实际使用中也可以不手动放到暂存区,而是通过git commit -a直接将修改合并到本地仓库,但是这样就要先设置好untracked的规则)。

在修改提交到本地仓库后,可以通过git push进一步将更改合并到远程仓库中。在任何时候我们都可以通过git status来检查本地project的状态。

tips: git push可以提交是因为我们通过clone复制工程时也保存了远程仓库的链接但是也有一些特殊的时候。比如说前面scp复制后就不会自动链接到服务器。这个时候我们可以通过:

git remote add origin git@B:/home/git/myproject.git

链接远程仓库。

而对于用于跑实验的服务器A。我们主要是需要拉取修改和提交,这个时候就可以用git pull来拉取对应的修改,并且和本地的分支合并。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值