Je viens d'entrer dans le monde merveilleux de git. Je dois soumettre une série de modifications apportées à mon programme, situées dans un répertoire appelé:/var/www/myapp
J'ai créé un nouveau répertoire "/ home/mylogin/gitclone" . À partir de ce répertoire, j'ai fait une commande "git clone" contre le dépôt public et j'ai pu obtenir la dernière copie créée.
J'essaie maintenant de comprendre comment récupérer tous les fichiers de mon dossier de travail (/ var/www/myapp) et les "archiver" dans le référentiel maître.
De/home/mylogin/gitclone, j'ai essayé la commande suivante:
"git add/var/www/myapp" mais je reçois un message d'erreur indiquant que le dossier que j'ai essayé d'ajouter est en dehors du référentiel.
Pouvez-vous me donner quelques indications sur ce que je fais mal? De plus, j'aimerais tout ajouter, que ce soit différent du maître ou non. Merci.
Tout d'abord dans le dossier de clonage, vous pouvez créer une branche (pour que le maître reste intact)
Git Branch [name]
Ensuite, copiez simplement le fichier souhaité (dans votre ancien dossier) dans le dossier clone.
Lorsque vous avez terminé, ajoutez/validez votre modification et Fusionnez votre branche dans la branche "maître"
Cela ressemblera à quelque chose comme ça.
git add .
git commit -m "Comments"
git checkout master
git merge [new_branch]
Essayez ce tutorial de GitHub
Vous devrez déplacer tous les fichiers de/var/www/myapp vers/home/mylogin/gitclone, puis faire un git add .
puis un git commit -m "Your message"
.
C’est parce que vous utilisez des versions dans /home/mylogin/gitclone
et que git suit tout intérieur ce dossier. Vous ne pouvez pas suivre d'autres dossiers en dehors de ce référentiel.
Une solution peut être de créer un sous-module ou d'utiliser un lien symbolique à l'aide de ln -s
.
Pour ajouter des fichiers ou des dossiers à votre référentiel, ils doivent se trouver dans le dossier que vous avez créé avec "git clone". Donc, copiez/collez votre application dans votre dossier git local, puis allez-y et faites "git add *" et vous pourrez alors vous engager sur le serveur avec "git commit -m 'message' "et enfin Transmettez les modifications au serveur avec" git Push "
Lors de la mise à niveau vers la version 2.12.2 de Git, cette erreur est apparue, j'ai noté que j'ajoutais le fichier avec un chemin complet, tel que:
git add c:\develop\project\file.text
une fois supprimé, le chemin complet commence à fonctionner, comme:
git add file.text
Git ne surveille que les fichiers et les dossiers du dossier racine, qui comprend le répertoire .git et les sous-dossiers du dossier racine. Le dossier que vous essayez d'ajouter est en dehors du champ d'application de git.
Ce que vous aimeriez réellement faire, c’est d’abord git checkout -b myapp
qui créera et extraira une nouvelle branche en fonction de la branche principale du référentiel que vous avez cloné. Ensuite, vous copiez tous vos fichiers et les validez avec git commit -a -m "Short descriptive name about what you did"
. Le paramètre -a
que vous avez passé à git commit
permet d'inclure toutes les modifications apportées au référentiel et -m
d'inclure le message de validation dans la commande réelle. Après cela, vous pouvez soit Push
revenir dans le référentiel principal si vous y avez accès en écriture, soit le transférer dans votre propre référentiel public, ou ne pas le pousser du tout.
Ce que j'ai décrit ci-dessus correspond en gros aux bases de Git. Essayez de lire ce livre qui est très descriptif.
Mon scénario est que le chemin du dépôt git a un lien symbolique et que git jette cette erreur quand add file dit "/home/abc/GIT_REPO/my_dir/my_file".and"/home "est en fait un lien logiciel vers"/devhome ".
code ninja m'a donné un peu de lumière quand j'ai essayé de déboguer ce cas.
J'ai donc essayé d'obtenir le répertoire cible en utilisant la commande readlink -f /home/abc/GIT_REPO
avant d'exécuter la commande add.
Et puis tout fonctionne à merveille!
Ce message peut également apparaître lorsque le nom du fichier est répertorié dans le fichier .gitignore.