Comment convertir un répertoire non vide existant en un répertoire de travail Git et pousser des fichiers vers un référentiel distant

644
  1. J'ai un répertoire non vide (par exemple / etc / quelque chose) avec des fichiers qui ne peuvent pas être renommés, déplacés ou supprimés.

  2. Je veux vérifier ce répertoire dans git en place.

  3. Je veux pouvoir pousser l'état de ce référentiel vers un référentiel distant (sur une autre machine) en utilisant "git push" ou quelque chose de similaire.

C'est trivial en utilisant Subversion (actuellement nous le faisons en utilisant Subversion) en utilisant:

svn mkdir <url> -m <msg>
cd <localdir>
svn co <url> .
svn add <files etc>
svn commit -m <msg>

Quel est l'équivalent git?

Puis-je "git clone" dans un répertoire vide et simplement déplacer le répertoire .git et que tout fonctionne?

HMW
la source
5
Peut-être que je ne comprends pas, mais ne pouvez-vous pas simplement exécuter git initdans le répertoire local?
Philipp
Voulez-vous dire que vous avez un dépôt ailleurs et que vous souhaitez ajouter à ce dépôt tout le contenu de cet autre répertoire qui n'est pas un dépôt? Ou essayez-vous simplement de créer un nouveau référentiel dans ce répertoire?
Cascabel
Un certain nombre de réponses mentionnent github, mais la question elle-même concerne git. github n'est pas git, et ce n'est pas le centre de l'univers git.
vfclists

Réponses:

1056

Étant donné que vous avez configuré un démon git <url>et un référentiel vide:

cd <localdir>
git init
git add .
git commit -m 'message'
git remote add origin <url>
git push -u origin master
abyx
la source
12
Les instructions d'abyx semblent fonctionner. Dois-je maintenant exécuter: git config branch.master.remote originet git config branch.master.merge refs/heads/master ce que je vais finir sera exactement le même que si je clonais le référentiel distant? à- dire git pullet git pushva tout simplement travailler ?
HMW
35
Cela a également fonctionné pour moi. J'ai d'abord dû créer un projet AppNamedans GitHub. Je ne savais pas exactement quels étaient les <url>moyens. Donc, pour ceux qui ont la même question, nous utilisons simplement GitHub.com, nous n'exécutons pas notre repo, puis <url>celui utilisé dans la 5ème ligne ressemblait à ceci:https://github.com/CompanyName/AppName
Bart
12
Si vous configurez un référentiel qui n'est pas sur GitHub, assurez-vous d'utiliser 'git --bare init' pour configurer le référentiel distant vide , et non 'git init' (comme je l'ai fait) ou le push échouera.
jdusbabek
3
Je voulais juste ajouter que je ne pouvais pas pousser avant d'avoir fait: git pull --rebase
Artemix
6
Si git rejette car remote contient des modifications mineures (.README, .gitignore, etc.), essayez git pull origin master --allow-unrelated-historiesde faire une fusion.
karlisup
80

Voilà comment je fais. J'ai ajouté des explications pour comprendre ce qui se passe.

Initialiser le référentiel local

  • initialisez d'abord Git avec

    git init

  • Ajoutez tous les fichiers pour le contrôle de version avec

    git add.

  • Créez un commit avec le message de votre choix

    git commit -m 'AddingBaseCode'

Initialiser le référentiel distant

  • Créez un projet sur GitHub et copiez l'URL de votre projet. comme indiqué ci-dessous:

    entrez la description de l'image ici

Lier le repo distant au repo local

  • Utilisez maintenant l'URL copiée pour lier votre référentiel local avec le référentiel GitHub distant. Lorsque vous clonez un référentiel avec git clone, il crée automatiquement une connexion distante appelée origine pointant vers le référentiel cloné. La commande distante est utilisée pour gérer un ensemble de référentiels suivis.

    git remote add origin https://github.com/hiteshsahu/Hassium-Word.git

Synchroniser

  • Maintenant, nous devons fusionner le code local avec le code distant. Cette étape est critique sinon nous ne pourrons pas pousser le code sur GitHub. Vous devez appeler «git pull» avant de pousser votre code.

    git pull origin master --allow-unrelated-histories

Validez votre code

  • Poussez enfin toutes les modifications sur GitHub

    git push -u origin master

Hitesh Sahu
la source
1
J'ai exécuté "git pull" comme décrit dans ce post et obtenu une erreur. J'ai continué avec "git push" qui a été accepté et quand je vais sur Bonobo Git Server, je peux maintenant voir le changement. Merci pour ce post avec des explications claires sur la commande GIT.
schlebe
Qu'est-ce que cela signifie: "et copiez l'URL de votre projet et copiez l'URL du projet." Est-ce une erreur de frappe, ou essayez-vous de parler de deux URL différentes, ou?
gwideman
C'est une erreur de typographie, copiez simplement l'URL du projet comme indiqué dans la capture d'écran
Hitesh Sahu
2
Ceci est la bonne réponse et devrait être celle qui est acceptée. La réponse acceptée ne contient pas votre étape "Synchroniser".
Ilan
28

Voici ma solution:

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
csomakk
la source
Bonne solution lorsque vous configurez le repo à distance avec .gitignore&README.dm
Hattori Hanzō
12

Dans le cas où le référentiel distant n'est pas vide (c'est le cas si vous utilisez IBM DevOps sur hub.jazz.net), vous devez utiliser la séquence suivante:

cd <localDir>
git init
git add -A .
git pull <url> master
git commit -m "message"
git remote add origin <url>
git push

EDIT 30 janvier 17: S'il vous plaît voir les commentaires ci-dessous, assurez-vous que vous êtes sur le bon repo!

Romeo Kienzler
la source
Les commandes ci-dessus ont effacé toutes mes versions existantes :( Veuillez faire preuve de prudence avant de faire les étapes ci-dessus
Selenium Framework
7

Quand un référentiel github n'est-il pas vide, comme .gitignore et license

Utilisez pull --allow-unrelated-history et push --force-with-lease

Utiliser des commandes

git init
git add .
git commit -m "initial commit"
git remote add origin https://github.com/...
git pull origin master --allow-unrelated-histories
git push --force-with-lease
Sebastian Oscar Lopez
la source
1
Je devais modifier cette dernière déclaration pour qu'elle ressemble davantage àgit push -u origin master --force-with-lease
cfont
2

La façon la plus simple de le faire que je trouve utile est la suivante.

Ce n'est peut-être pas la manière officielle, mais cela fonctionne bien.

Supposons que vous ayez un projet nommé " XYZ" sur votre PC. Vous voulez maintenant faire un git repo de ce projet sur github et utiliser ses fonctionnalités.

Étape 1 : allez à " www.github.com"

Étape 2 : créez un référentiel avec un README.mdfichier " " (nommez-le comme vous l'aimez)

Étape 3 : clonez le référentiel sur votre PC.

Étape 4 : Dans le dossier cloné, vous obtiendrez deux choses: un .gitdossier " " et un README.mdfichier " ". Copiez ces deux éléments dans votre dossier de projet " XYZ".

Étape 5 : supprimez le référentiel cloné.

Étape 6 : ajoutez, validez et envoyez tous les fichiers et dossiers de votre projet.

Maintenant, vous pouvez simplement utiliser votre projet " XYZ" comme référentiel git.

Génie
la source
0

J'avais un problème similaire. J'ai créé un nouveau référentiel, PAS DANS L'ANNUAIRE QUE J'AI VOULU FAIRE UN REPOSITOIRE . J'ai ensuite copié les fichiers créés dans le répertoire dans lequel je voulais créer un référentiel. Ouvrez ensuite un référentiel existant en utilisant le répertoire dans lequel je viens de copier les fichiers.

REMARQUE: j'ai utilisé le bureau github pour créer et ouvrir le référentiel sortant.

tpage
la source
0

Voici ma solution si vous avez créé le référentiel avec une valeur par défaut readme fileoulicense

git init
git add -A
git commit -m "initial commit"   
git remote add origin https://<git-userName>@github.com/xyz.git //Add your username so it will avoid asking username each time before you push your code
git fetch
git pull https://github.com/xyz.git <branch>
git push origin <branch> 
Harish Karthick
la source