web-dev-qa-db-fra.com

Comment transférer un seul fichier dans un sous-répertoire vers Github (non master)

J'ai modifié un seul fichier dans un sous-répertoire de mon référentiel et je souhaite transmettre uniquement ce fichier à Github.

J'ai apporté une petite modification à un fichier et je ne souhaite pas télécharger à nouveau l'intégralité du référentiel.

Il semble que toutes les instructions que j'ai vues jusqu'à présent m'obligent à fusionner localement avec le maître, puis à pousser mon maître local vers l'origine distante.

Comment puis-je pousser seulement ce fichier?

27
moon star

Lorsque vous effectuez un Push, git ne prend que les modifications que vous avez effectuées.

Rappelez-vous quand vous faites un git status _ vous montre les fichiers que vous avez modifiés depuis le dernier push?

Une fois que vous avez validé ces modifications et effectué un Push, ce sont les seuls fichiers qui sont envoyés de manière à ce que vous n'ayez pas à vous soucier de penser que le maître tout entier est envoyé car en réalité, ce n'est pas le cas.

Comment pousser un seul fichier:

git commit yourfile.js
git status
git Push Origin master
28
krilovich

Très simple. Il suffit de suivre cette procédure:
1. statut git
2. git add {File_Name} // le nom du fichier que vous avez changé
3. statut git
4. git commit -m '{votre_message}'
5. Maître git Push Origin

12
Salman Srabon

Laissez-moi commencer par dire que la façon dont git fonctionne est que vous ne poussez/récupérez pas de fichiers; du moins pas directement.

Vous poussez/récupérez des références, ce qui signale des commits. Ensuite, un commit in git est une référence à une arborescence d'objets (où les fichiers sont représentés sous forme d'objets, parmi d'autres).

Donc, quand vous poussez un commit, qu'est-ce que git fait, il pousse un ensemble de références comme dans cette image:

git commits

Si vous n'avez pas encore poussé votre branche principale, toute l'histoire de la branche sera poussée.

Ainsi, dans votre exemple, lorsque vous validez et poussez votre fichier, toute la branche principale sera poussée, si elle n’a pas été poussée auparavant.

Pour faire ce que vous avez demandé, vous devez créer une branche propre sans historique, comme dans cette réponse .

10
Adam Adamaszek

Si vous validez un fichier et appuyez sur votre révision, le transfert ne sera pas transféré dans son intégralité, il modifiera les modifications.

Il ne fera que pousser les nouveaux commits. Cela ne va pas pousser toute la branche "maître". Cela fait partie des avantages de travailler avec un système de contrôle de version distribué. Git détermine ce qui est réellement nécessaire et ne fait que pousser ces pièces. Si la branche sur laquelle vous vous trouvez a été modifiée et poussée par quelqu'un d'autre, vous devez d'abord tirer. Ensuite, poussez vos commits.

1
Andrew T Finnell

Push seulement un fichier

git commit -m "Message goes here" filename

Ne poussez que deux fichiers.

git commit -m "Message goes here" file1 file2
0
itro