基于onedrive搭建简易的私有git“远程仓库”

在onedrive上搭建git"中央仓库"

参考和这么做的原因

这么做的原因:如果项目代码直接存放在onedrive上,会导致每次构建项目都会触发onedrive的同步工作,同步很多不必要的文件,所以考虑使用git的版本控制,在onedrive做仓库,并在本地建立仓库从onedrive clone

思路来源:有给 OneDrive 设置 .ignore 的方法吗? - V2EX #7

本地仓库搭建方法参考:How to create a git remote? - Stack Overflow

执行步骤

  1. 安装git
  2. 在onedrive创建文件夹作为远程仓库地址: my-remote-repository
  3. my-remote-repository执行git裸仓库初始化命令:git init --bare
  4. 在本地文件夹clonemy-remote-repository作为远程仓库:git clone file://E:\OneDrive\my-remote-repository

完成!

之后就可以在VSCode安装gitLens爽爽pull/push了

快捷化操作

编写powershell脚本(适用于win11)(需要先安装git)

  • 需要先安装git
  • 请按照需要修改$oneDrivePath$repositoryPath
  • [System.Environment]::GetFolderPath("Personal") + "\OneDrive"仅适用于未修改OneDrive同步位置的情况
  • 将上述代码保存为.ps1文件即可作为powershell脚本
  • powershell脚本默认不能双击运行,需要右键使用 PoweShell 运行,或者右键文件夹在终端打开,然后输入./+脚本名再回车运行

1. 在onedrive创建空白远程仓库并克隆到本地

  • 在目录 /my/local/dir 运行,输入folderName,会生成folderName存储库,克隆出 /my/local/dir/folderName文件夹
# 存储当前路径
$localpath = $PWD.Path

# OneDrive目录
#$oneDrivePath = [System.Environment]::GetFolderPath("Personal") + "\OneDrive"
$oneDrivePath = "E:\OneDrive"

# 设定库目录
$repositoryPath = "\Studio\Code\Cpp"
echo 存储库路径为:$($oneDrivePath+$repositoryPath)

# 输入文件夹名
$folderName = Read-Host "-请输入文件夹名"

# 在OneDrive目录下创建文件夹
$remotepath = Join-Path -Path $($oneDrivePath+$repositoryPath) -ChildPath $folderName

# 检查是否已经存在同名文件夹
if (Test-Path $remotepath) {
    $overwrite = Read-Host "文件夹 $folderName 已存在于 OneDrive 目录下。是否覆盖文件夹?(y/n)"

    if ($overwrite -eq "n") {
        Write-Host "操作已取消。请重新运行脚本。"
        return
    }
    elseif ($overwrite -ne "y") {
        Write-Host "无效的输入。操作已取消。请重新运行脚本。"
        return
    }
    else {
        Remove-Item -Path $remotepath -Recurse -Force -Confirm:$false | Out-Null
    }
}

# 创建新的文件夹
New-Item -ItemType Directory -Path $remotepath | Out-Null

# 在$remotepath中调用git init --bare
Set-Location $remotepath
git init --bare 

echo 远程存储库已生成:$remotepath

# 切换回localpath
Set-Location $localpath

# 运行命令git clone file://${remotepath}
git clone file://$remotepath

# 输出结果
Write-Host "操作完成!已在OneDrive目录下创建文件夹 $folderName,并成功设置远程仓库。"

2. 在onedrive创建同名空白远程仓库并推送本地内容

  • 要求脚本所在文件夹已经使用git进行版本管理
  • 在目录 /my/local/dir/myproject 运行,会生成名为myproject的远程仓库
# 存储当前路径
$localpath = $PWD.Path

# OneDrive目录
#$oneDrivePath = [System.Environment]::GetFolderPath("Personal") + "\OneDrive"
$oneDrivePath = "E:\OneDrive"

# 设定库目录
$repositoryPath = "\Studio\Code\Cpp"
echo 存储库路径为   $($oneDrivePath+$repositoryPath)

$currentFolder = Split-Path -Path $PWD.Path -Leaf

# 在OneDrive目录下创建文件夹
$remotepath = Join-Path -Path $($oneDrivePath+$repositoryPath) -ChildPath $currentFolder

# 检查是否已经存在同名文件夹
if (Test-Path $remotepath) {
    $overwrite = Read-Host "文件夹 $currentFolder 已存在于 OneDrive 目录下。是否覆盖文件夹?(y/n)"

    if ($overwrite -eq "n") {
        Write-Host "操作已取消。请重新运行脚本。"
        return
    }
    elseif ($overwrite -ne "y") {
        Write-Host "无效的输入。操作已取消。请重新运行脚本。"
        return
    }
    else {
        Remove-Item -Path $remotepath -Recurse -Force -Confirm:$false | Out-Null
    }
}

# 创建新的文件夹
New-Item -ItemType Directory -Path $remotepath | Out-Null

# 在$remotepath中调用git init --bare
Set-Location $remotepath
git init --bare 

echo 远程存储库已生成:$remotepath

# 切换回localpath
Set-Location $localpath

# 运行命令git remote add origin file://${remotepath}
git remote add origin file://$remotepath
git push --set-upstream origin master

# 输出结果
Write-Host "操作完成!已在OneDrive目录下创建文件夹 $currentFolder,并成功设置远程仓库。"

相关解释

git init --bare

from chatgpt

git init --bare 是一个用于创建一个裸仓库(bare repository)的Git命令。

在Git中,一个裸仓库是一个没有工作目录的仓库。它只包含Git版本控制系统所需的文件和元数据,没有实际项目文件。裸仓库通常用作共享和中央仓库,用于多人协作和代码共享。

具体来说,git init --bare 命令在当前目录下创建一个新的裸仓库。这个仓库不包含项目文件,只包含用于版本控制的.git目录和相关的文件。

创建裸仓库后,其他开发人员可以通过克隆(clone)这个裸仓库来获取代码的副本,并向其中推送(push)自己的更改。裸仓库没有工作目录,因此不支持直接在其上进行修改和编辑文件,而是用作中央代码存储的中转站。

裸仓库的典型用途包括:

  1. 作为团队中央仓库:团队成员可以从裸仓库克隆代码,将自己的更改推送到裸仓库,并从中获取最新的更改。
  2. 用于部署:在服务器上创建一个裸仓库,用于部署应用程序或网站的更新。开发人员可以将新的代码推送到裸仓库,然后服务器上的工作目录会自动更新。

总之,git init --bare 是创建一个裸仓库的命令,用于共享代码、多人协作和中央存储。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要在Linux上搭建Git远程仓库,需要按照以下步骤进行操作: 1. 安装Git:在Linux上安装Git,可以使用命令行工具或者包管理器进行安装。 2. 创建Git用户:为了安全起见,最好为Git创建一个专门的用户,用于管理Git仓库。 3. 创建Git仓库:使用Git命令创建一个空的Git仓库,可以在本地或者远程服务器上创建。 4. 配置Git仓库:为Git仓库设置一些基本的配置信息,如用户名、邮箱等。 5. 克隆Git仓库:在本地或者其他服务器上克隆Git仓库,可以使用SSH或者HTTP协议进行克隆。 6. 推送代码:将本地代码推送到Git仓库中,可以使用Git命令或者Git客户端进行操作。 7. 拉取代码:从Git仓库中拉取代码到本地,可以使用Git命令或者Git客户端进行操作。 以上是在Linux上搭建Git远程仓库的基本步骤,具体操作可以根据实际情况进行调整。 ### 回答2: 在Linux系统中,我们可以通过Git搭建一套远程仓库,以方便团队进行代码的共享和管理。下面是一个简单的步骤: 1. 安装Git:在Linux系统中使用以下命令安装Git: ``` sudo apt-get install git ``` 2. 创建git用户:使用以下命令创建一个名为git的用户: ``` sudo adduser git ``` 3. 创建Git仓库:在git用户的home目录下创建仓库文件夹,例如: ``` sudo mkdir /home/git/repo.git ``` 4. 初始化仓库:使用以下命令初始化仓库: ``` sudo git init --bare /home/git/repo.git ``` 5. 设置仓库访问权限:在仓库目录下使用以下命令设置权限: ``` sudo chown -R git:git /home/git/repo.git sudo chmod -R 755 /home/git/repo.git ``` 6. 创建SSH密钥:使用以下命令在本地机器上创建SSH密钥: ``` ssh-keygen ``` 7. 将公钥添加至仓库:将生成的公钥(~/.ssh/id_rsa.pub)添加至git用户的.home目录下的authorized_keys文件中,例如: ``` sudo su git cd /home/git mkdir .ssh cd .ssh touch authorized_keys nano authorized_keys ``` 在authorized_keys文件中添加公钥。 8. 克隆仓库:使用以下命令将远程仓库克隆到本地: ``` git clone git@ip:/home/git/repo.git ``` 其中,ip为远程服务器的IP地址;repo.git仓库文件夹。 至此,我们已经成功地在Linux系统中搭建了一个Git远程仓库。我们可以让团队成员通过SSH协议访问该仓库,并进行代码的管理和共享。 ### 回答3: Git是一个流行的版本控制系统,可以通过Linux操作系统搭建Git远程仓库。以下是搭建Git远程仓库的步骤,这将有助于您在Linux上设置仓库。 1.安装Git软件包:首先,安装Git软件包。Git是一个自由软件,可以从Git网站上免费下载。您可以使用以下命令安装Git: sudo apt-get install git 如果您使用的是不同的Linux发行版,请选择相应的命令来执行安装。 2.创建Git用户:创建一个专用的Git用户,充当版本控制仓库的管理员。此操作可增强安全性。 sudo adduser git 创建用户时,设置密码和其他信息。 3.创建Git仓库:选择要在Linux服务器上设置的Git仓库目录,并创建目录。然后为用户Git设置目录权限。 sudo mkdir /opt/git sudo chown git:git /opt/git 创建完成后,使用以下命令进入目录: cd /opt/git 您可以使用以下命令初始化仓库,并将它设置为共享资源: sudo git init --bare --shared=my-group my-project.git 其中 my-group 是组名,my-project.git 是创建的仓库。同时,Git要求您对各个项目分配名称。 4.设置远程访问:您应该设置一个访问Git仓库的方式。为此,请在虚拟主机上打开SSH,并创建仓库访问的公钥和私钥。 您可以使用以下命令生成SSH密钥: sudo su - git ssh-keygen -t rsa 将公钥添加到Git仓库: sudo cat /home/git/.ssh/id_rsa.pub >> /opt/git/my-project.git/.ssh/authorized_keys 5.下载代码仓库:现在,您可以将代码版本控制仓库从Linux服务器下载到客户端。为此,您需要标识仓库位置、仓库名称以及提供SSH密钥。 git clone git@<ServerIpAddressOrHostname>:<RepositoryDirectory>/<RepositoryName>.git 最后,您可以使用以下命令离开Git用户: # exit 总之,以上是在Linux服务器上设置Git远程仓库的步骤。通过这些步骤,您可以更好地管理和维护仓库,从而更加有效地管理代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值