windows - 如何在 Linux 上设置私有(private) git 服务器

标签 windows linux git ssh

我试过关注 how-set-up-your-own-private-git-server-linuxprivate-remote-git-repositories-ubuntu-linode但我仍然遇到问题。

我本地环境是windows,远程是linux。我有几个问题:

  1. 在第一篇文章中,它描述了为服务器设置公共(public) ssh key ——我以前从未这样做过,我不确定在哪里输入命令(甚至不确定是本地还是远程!!):ssh myuser@server.com mkdir .sshscp ~/.ssh/id_rsa.pub myuser@server.com:.ssh/authorized_keys
  2. 我应该在我的本地开发机器上运行 msysgit ?有没有替代方案,因为我安装的版本占用了 1.4 GB!我从 http://code.google.com/p/msysgit/downloads/list 安装了 msysGit-netinstall-1.7.4-preview20110204.exe

我尝试跳过创建 git 用户和公钥,在远程机器上创建存储库,但是当我尝试 git remote add origin ssh://[username]@[domain/ip/hostname]/srv/git/[project-name] 作为 root 用户,它说:fatal: Not a git repository (or any of the parent directories): .git

最佳答案

我不确定这是否应该放在此处,或者是否最好将其迁移到其他站点,但由于我可能会提供帮助,所以我会继续回答。

我只是浏览了您链接的文章。看起来他们都处理通过 ssh 访问 git 服务器,你提到了这一点,所以这就是我要关注的。

首先,在您的服务器上:

您需要在服务器上设置一个帐户才能登录。这可以是通用的 git 帐户,也可以是您自己的个人帐户。目前我们假设您将其设置为使用个人帐户。您要做的是创建您的帐户,然后在该帐户可访问的某个地方(例如,在您的主目录中)创建 git 存储库。

mkdir myrepo.git
cd myrepo.git
git --bare init --shared=all

现在您在服务器上有了一个 git 存储库。根据您使用的 git 客户端,您现在可能不需要弄乱 key 。如果 SSH 在您的服务器上配置为允许密码登录,那么当您需要与服务器交互时,您可能只需连接并输入密码即可。如果你想设置 key ,你需要做的是生成一个 ssh 公钥。我不知道如何在 windows 中执行此操作,但在 linux 中你会做类似的事情:

ssh-keygen -t rsa -b 1024

该命令将生成两个文件,“id_rsa”和“id_rsa.pub”;无论您使用什么工具,都应该生成两个文件,一个公钥和一个私钥。它们可能有不同的名称,但现在假设“id_rsa.pub”是您的公钥文件的名称。

您想将公钥复制到服务器,您可以使用 scp、ftp,或者使用拇指驱动器将其移动。无论哪种方式,一旦您将它放到服务器上,并且您的用户可以访问它,请在服务器上以您的用户身份登录。您想要将公钥添加到您的“authorized_hosts”文件中,因此在登录到您在服务器上的帐户后,执行以下操作:

cd
mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_hosts
rm id_rsa.pub

现在,您需要从您的工作站配置您的 ssh 客户端以使用您生成的私钥。同样,我不知道如何在 Windows 上执行此操作,它可能会因您使用的 ssh 客户端而异,因此您需要从其他地方获取该信息。

接下来,您需要创建本地存储库、添加一些文件并进行提交。请注意,您还不能克隆您创建的远程存储库,因为那里什么都没有。一旦您在本地进行了一些提交,您需要在您的存储库中设置远程服务器。

如果您使用的是 git 命令行工具,您可以运行:

git remote add origin user@yourserver:myrepo.git

如果您将存储库放在您的主目录之外的其他位置,请使用完整路径:

git remote add origin user@yourserver:/path/to/repo.git

请注意,您需要在其中包含“.git”,因为您的目录名称中包含“.git”。

如果您使用的是 GUI 工具,那么您只需编辑存储库的配置文件即可。这将在“.git/config”下的存储库的顶层。你会想要添加类似的东西

[remote "origin"]
    url = user@yourserver:/path/to/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

现在您的远程配置已经完成,并且您在本地有一些提交,您可以将您的 master 分支推送到服务器。如果您使用的是命令行,请使用:

git push origin master

或者,如果您在不同的分支机构工作:

git push origin mybranch

如果您使用 GUI 前端获取 get,那么您需要查找该工具的文档以了解如何推送。

关于windows - 如何在 Linux 上设置私有(private) git 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6249088/

相关文章:

c++ - 使用 Visual Studio 构建 Freetype 应用程序时出错

linux - !#/bin/bash : No such file or directory

c - 让程序按照命令运行

linux - SCP 不适用于目录,但适用于文件 - 从本地上传到 EC2?

git - 使用 Git merge Unity 3D 场景

git - 在一次运行中删除多个分支

windows - 无法访问 tomcat 6 服务器上的 robots.txt 文件

windows - npm cordova 警告引擎窗口

c# - 在 C# 中创建类对象

eclipse - 如何在 eclipse 项目上创建 git 存储库,反之亦然?