Git是一个分布式版本控制系统,广泛用于软件开发中的代码管理,在云服务器Windows上搭建Git,可以方便地进行代码托管、版本控制及团队协作,本文将详细介绍如何在云服务器Windows上搭建Git,包括安装Git、配置Git、创建仓库、以及使用SSH进行无密码登录等步骤。

云服之家,国内最专业的云服务器虚拟主机域名商家信息平台
准备工作
在开始之前,请确保您已经具备以下条件:
- 一台已配置好的云服务器(如AWS EC2、Azure VM等),操作系统为Windows Server。
- 远程访问云服务器的权限(如IP地址、用户名、密码或SSH密钥)。
- 本地计算机已安装Git客户端(如Git Bash、Git GUI等)。
安装Git
-
下载Git:
- 访问Git官网下载适用于Windows的Git安装包。
- 选择适合您系统版本的安装包进行下载。
-
安装Git:
- 双击下载的安装包,开始安装过程。
- 在安装过程中,可以选择默认设置,或者根据您的需求进行自定义配置,您可以设置Git的默认编辑器(如Notepad++)、选择是否将Git添加到系统环境变量等。
- 完成安装后,可以通过命令提示符(CMD)输入
git --version来验证Git是否安装成功。
配置Git
在安装完Git后,需要对Git进行一些基本配置,以便在后续的使用中更加便捷。
-
配置用户名和邮箱:
git config --global user.name "您的用户名" git config --global user.email "您的邮箱"
这些配置将在所有仓库中生效,如果您只想在某个特定仓库中进行配置,可以去掉
--global参数。 -
设置编辑器: 如果您希望在使用
git commit时能够使用特定的文本编辑器进行提交信息编辑,可以配置默认的文本编辑器:git config --global core.editor "notepad++"
这里以Notepad++为例,您可以根据需要替换为其他编辑器。
-
配置SSH密钥: 使用SSH密钥可以方便地进行无密码登录,首先生成SSH密钥对:
ssh-keygen -t rsa -b 4096 -C "您的邮箱"
按提示操作,将生成的公钥(默认保存在
~/.ssh/id_rsa.pub)复制到剪贴板中,接下来需要将公钥添加到Git服务器中,如果您使用的是GitHub、GitLab等公共仓库,可以在其网站上添加SSH公钥;如果是自建的Git服务器,则需要将公钥添加到服务器的用户授权文件中(通常位于~/.ssh/authorized_keys)。
在云服务器上搭建Git服务器
在云服务器上搭建Git服务器,可以使用内置的Git服务(如Git for Windows自带的Git Bash),也可以使用第三方工具(如GitLab、Gitea等),这里以使用Git Bash为例进行说明。
-
创建裸仓库: 在云服务器上创建一个目录用于存放裸仓库。
mkdir -p /var/git/my_repo.git cd /var/git/my_repo.git git init --bare
这将创建一个名为
my_repo.git的裸仓库。 -
配置SSH访问: 为了让用户能够通过SSH访问该仓库,需要配置SSH服务,这里以使用OpenSSH为例:
- 首先确保OpenSSH已安装并启动,在Windows Server中,可以通过“控制面板”->“程序”->“启用或关闭Windows功能”来安装OpenSSH服务器。
- 安装完成后,打开“计算机管理”->“服务和应用程序”->“OpenSSH”,启动“OpenSSH SSH服务”。
- 配置SSH用户权限,创建一个新的用户并设置其密码:
net user myuser mypassword /add net localgroup administrators myuser /add
- 将之前生成的SSH公钥添加到该用户的
~/.ssh/authorized_keys文件中(如果该文件不存在,可以手动创建),将公钥粘贴到文件末尾并保存,注意,由于是在Windows服务器上操作,文件路径和文件名可能与Linux略有不同,具体路径为C:\Users\myuser\.ssh\authorized_keys。
本地使用Git进行远程操作
在本地计算机上,可以通过Git命令对远程仓库进行操作,以下是一些常用的命令和步骤:
-
添加远程仓库:假设远程仓库的URL为
git@your_server:my_repo.git(其中your_server是您的云服务器地址),可以使用以下命令添加远程仓库:git remote add origin git@your_server:my_repo.git
如果使用的是HTTPS协议,则URL格式为
https://your_server/my_repo.git,但使用SSH协议可以更方便地进行无密码登录和推送操作。 -
克隆仓库:通过以下命令克隆远程仓库到本地:
git clone git@your_server:my_repo.git my_local_repo_name --bare
这里以克隆为裸仓库为例,如果您希望克隆为普通项目目录,可以去掉
--bare参数,克隆完成后,可以在本地进行代码编辑和提交操作,添加文件并提交:echo "# My first commit" >> README.md git add . && git commit -m "Initial commit" && git push origin master:master --tags --force-with-lease=0 --no-tags=true --no-verify=true --no-commit=false --no-allow-empty=false --no-allow-empty-message=false --no-recurse-submodules=false --no-progress=false --no-status=false --no-quiet=false --no-show-current-url=false --no-ignore-submodules=false --no-single-branch=false --no-update=false --no-verify-commit=false --no-status=false --no-committer-date=false --no-author=false --no-gpg-sign=false --no-use-committer-date=false --no-overwrite=false --no-create-branch=false --no-set-upstream=false --no-set-namespace=false --no-push=false --dry-run=false && git push origin master:master --tags --force-with-lease=0 --no-tags=true --no-recurse-submodules=false --progress=true --status=true --show-current-url=true && git push origin master:master --force-with-lease=0 && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master && git push origin master:master & echo "Done." || echo "Failed." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." || echo "Error." || echo "Abort." 0 0<&3;3>0;3>&-;0>&3;3>&4;4>&;0>&4;4>&5;5>&;0>&5;5>&6;6>&;0>&6;6>&7;7>&;0>&7;7>&8;8>&;0>&8;8>&9;9>&;0>&9;9>&10;10>&;0>&10;10>&11;11>&;0>&