J'ai un dépôt Git local. Je tiens à le rendre disponible sur une distance, ssh est activé, le serveur. Comment dois-je faire?
Réponses
Trop de publicités?Je pense que vous faites un dépôt nu sur le côté distant, git init --bare
, ajouter le côté distant comme le push/pull tracker pour votre référentiel local (git remote add origin URL
), puis localement que vous venez de dire git push origin master
. Maintenant un autre référentiel peut - pull
sur le dépôt distant.
Afin d'établir d'abord un serveur Git, vous devez les exporter d'un référentiel existant dans un nouveau dépôt nu - un répertoire qui ne contient pas de répertoire de travail. C'est généralement simple à faire. Afin de cloner votre dépôt de créer un nouveau dépôt nu, vous exécutez la commande clone avec l' --bare
option. Par convention, les répertoires de dépôt nu fin en .git
, comme suit:
$ git clone --bare my_project my_project.git
Initialized empty Git repository in /opt/projects/my_project.git/
Cette commande prend le dépôt Git par lui-même, sans un répertoire de travail, et crée un répertoire spécifique à elle seule.
Maintenant que vous avez une simple copie de votre dépôt, tout ce que vous devez faire est de mettre sur un serveur et de configurer les protocoles. Disons que vous avez mis en place un serveur appelé git.example.com
que vous avez un accès SSH, et que vous souhaitez stocker tous vos dépôts Git dans l' /opt/git
répertoire. Vous pouvez configurer votre nouveau référentiel par la copie de votre dépôt nu:
$ scp -r my_project.git user@git.example.com:/opt/git
À ce stade, les autres utilisateurs qui ont un accès SSH au serveur qui a accès en lecture à l' /opt/git
annuaire pouvez cloner votre dépôt en cours d'exécution
$ git clone user@git.example.com:/opt/git/my_project.git
Si un utilisateur Se dans un serveur et a accès en écriture à l' /opt/git/my_project.git
répertoire, il aura automatiquement pousser accès. Git va automatiquement ajouter un groupe d'autorisations d'écriture pour un dépôt si vous lancez la commande git init avec l' --shared
option.
$ ssh user@git.example.com
$ cd /opt/git/my_project.git
$ git init --bare --shared
Il est très facile de prendre un dépôt Git, créer une version nue, et la placer sur un serveur auquel vous et vos collaborateurs avez un accès SSH. Vous êtes maintenant prêt à collaborer sur le même projet.
Une remarque pour les gens qui ont créé la copie locale sur Windows et que vous voulez créer une distance correspondante référentiel sur un Unix-système de ligne de, où le texte, les fichiers de la FL de fin sur plus de clones par les développeurs sur les systèmes de type Unix, mais CRLF terminaisons sur Windows.
Si vous avez créé votre Windows référentiel avant de la configuration de la ligne de fin de traduction alors vous avez un problème. Git est le réglage par défaut est aucune traduction, de sorte que votre jeu de travail utilise CRLF mais votre référentiel (c'est à dire les données stockées sous .git) a enregistré les fichiers que CRLF trop.
Lorsque vous appuyez sur de la télécommande, les fichiers enregistrés sont copiés en est, pas de fin de ligne de la traduction se produit. (Fin de ligne de la traduction se produit lorsque les fichiers sont engagés à un référentiel, et non pas lorsque les dépôts sont poussés). Vous vous retrouvez avec CRLF dans votre Unix-comme référentiel, qui n'est pas ce que vous voulez.
Pour obtenir la FL dans le dépôt distant, vous devez assurez-vous que LF est dans le référentiel local d'abord, par re-normaliser votre référentiel Windows. Cela n'aura pas d'effet visible sur votre Windows jeu de travail, qui a encore CRLF à la fin, cependant, lorsque vous pousser à distance, la télécommande obtenir LF correctement.
Je ne sais pas si il y a un moyen facile de dire que les fins de ligne que vous avez dans votre référentiel Windows - je suppose que vous pourriez tester en configuration de base.autocrlf=false et le clonage (Si l'opération a LF terminaisons, le clone aura LF trop).