web-dev-qa-db-fra.com

Comment extraire un seul fichier d'un référentiel de serveur dans Git?

Je travaille sur un site avec un serveur exécutant Git. J'utilise Git pour le déploiement (pas GitHub). Cela a été mis en place avant mon implication en utilisant un méthode du crochet , et j'ai fait référence à cette question et entré les commandes ci-dessous, mais cela n'a pas fonctionné.

Comment puis-je extraire un seul fichier du serveur? Par exemple, si je voulais mettre à jour mon fichier local index.php? git pull index.php?

86
vsvs

Il est possible de faire (dans le référentiel déployé):

git fetch
// git fetch will download all the recent changes, but it will not put it in your current checked out code (working area).

Suivi par:

git checkout Origin/master -- path/to/file
// git checkout <local repo name (default is Origin)>/<branch name> -- path/to/file will checkout the particular file from the downloaded changes (Origin/master).
143
chrismillah
git fetch --all
git checkout Origin/master -- <your_file_path>
git add <your_file_path>
git commit -m "<your_file_name> updated"

Cela suppose que vous extrayez le fichier de Origin/master.

17
OYORF

Cela peut être la solution:

git fetch

git checkout Origin/master -- FolderPathName/fileName

Merci.

8
Y. Joy Ch. Singha

Ce scénario survient lorsque vous (ou des forces plus importantes que vous) avez mutilé un fichier dans votre dépôt local et que vous souhaitez simplement restaurer une nouvelle copie. de la dernière version de ce repo. Supprimer simplement le fichier avec/bin/rm (pas git rm) ou le renommer/le cacher puis émettre un git pull ne fonctionnera pas: git remarque l'absence du fichier et suppose que vous voulez probablement le supprimer du référentiel (git diff affichera toutes les lignes supprimées du fichier manquant).

git pull ne pas restaurer les fichiers manquants localement m'a toujours frustré à propos de git, peut-être depuis que j'ai été influencé par d'autres systèmes de contrôle de version (par exemple, svn update que je crois va restaurer les fichiers cachés localement).

git reset --hard HEAD est un autre moyen de restaurer le fichier qui vous intéresse car il élimine les modifications non validées. Cependant, comme indiqué ici , la réinitialisation de git est une commande potentiellement dangereuse si vous avez d'autres modifications non validées qui vous intéressent.

La stratégie git fetch ... git checkout notée ci-dessus par @chrismillah est une méthode chirurgicale intéressante pour restaurer le fichier en question.

2
Trutane
https://raw.githubusercontent.com/[USER-NAME]/[REPOSITORY-NAME]/[BRANCH-NAME]/[FILE-PATH]

Ex. https://raw.githubusercontent.com/vipinbihari/apana-result/master/index.php

Grâce à cela, vous obtiendrez le contenu d'un fichier individuel sous forme de texte de ligne. Vous pouvez télécharger ce texte avec wget.

Ex. https://raw.githubusercontent.com/vipinbihari/apana-result/master/index.php

1

Essayez d'utiliser:

git checkout branchName -- fileName

Ex:

git checkout master -- index.php
0
Dodda Venkata

Ce lot Windows fonctionne indépendamment du fait qu'il soit ou non sur GitHub. Je l'utilise parce qu'il montre des mises en garde sévères. Vous remarquerez que l'opération est lente et qu'elle traverse des centaines de mégaoctets de données , donc n'utilisez pas cette méthode si vos exigences sont basées sur la bande passante disponible./Mémoire RW.

sparse_checkout.bat

pushd "%~dp0"
if not exist .\ms-server-essentials-docs mkdir .\ms-server-essentials-docs
pushd .\ms-server-essentials-docs
git init
git remote add Origin -f https://github.com/MicrosoftDocs/windowsserverdocs.git
git config core.sparseCheckout true
(echo EssentialsDocs)>>.git\info\sparse-checkout
git pull Origin master

=>

C:\Utilisateurs\nom d'utilisateur\Bureau> sparse_checkout.bat

C:\Utilisateurs\nom d'utilisateur\Bureau> pushd "C:\Utilisateurs\nom d'utilisateur\Bureau \"

C:\Utilisateurs\nom d'utilisateur\Bureau> s'il n'existe pas.\Ms-serveur-essentials-docs mkdir.\Ms-serveur-essentials-docs

C:\Utilisateurs\nom d'utilisateur\Bureau> pushd.\Ms-serveur-essentials-docs

C:\Utilisateurs\nom d'utilisateur\Bureau\ms-serveur-essentials-docs> init git Initialisation du référentiel Git vide dans C:/Utilisateurs/nom d'utilisateur/Bureau/ms-serveur-essentials-docs/.git /

C:\Utilisateurs\nom d'utilisateur\Bureau\ms-serveur-essentials-docs> git distant ajouter Origine -f https://github.com/MicrosoftDocs/windowsserverdocs.git Mise à jour d'origine distante: Énumération d'objets : 97, fait. remote: Comptage d'objets: 100% (97/97), terminé. remote: Compression d'objets: 100% (44/44), terminé. à distance: total 145517 (delta 63), réutilisé 76 (delta 53), pack-réutilisé 145420 Réception d'objets: 100% (145517/145517), 751,33 MiB | 32,06 MiB/s, fait. Résolution des deltas: 100% (102110/102110), terminé. De https://github.com/MicrosoftDocs/windowsserverdocs * [nouvelle branche]
1106-conflict -> Origin/1106-conflict * [nouvelle branche]
FromPrivateRepo -> Origin/FromPrivateRepo * [nouvelle branche]
PR183 -> Origin/PR183 * [nouvelle branche]
conflictfix -> Origin/conflictfix * [nouvelle branche]
eross-msft-patch-1 -> Origine/eross-msft-patch-1 * [nouvelle branche]
master -> Origin/master * [nouvelle branche] patch-1
-> Origin/patch-1 * [nouvelle branche] repo_sync_working_branch -> Origine/repo_sync_working_branch * [nouvelle branche]
shortpatti-patch-1 -> Origine/shortpatti-patch-1 * [nouvelle branche]
shortpatti-patch-2 -> Origine/shortpatti-patch-2 * [nouvelle branche]
shortpatti-patch-3 -> Origine/shortpatti-patch-3 * [nouvelle branche]
shortpatti-patch-4 -> Origine/shortpatti-patch-4 * [nouvelle branche]
shortpatti-patch-5 -> Origine/shortpatti-patch-5 * [nouvelle branche]
shortpatti-patch-6 -> Origine/shortpatti-patch-6 * [nouvelle branche]
shortpatti-patch-7 -> Origine/shortpatti-patch-7 * [nouvelle branche]
shortpatti-patch-8 -> Origine/shortpatti-patch-8

C:\Utilisateurs\nom d'utilisateur\Bureau\ms-serveur-essentials-docs> git config core.sparseCheckout true

C:\Utilisateurs\nom d'utilisateur\Bureau\ms-serveur-essentials-docs> (echo EssentialsDocs) 1 >>. Git\info\sparse-checkout

C:\Utilisateurs\nom d'utilisateur\Bureau\ms-serveur-essentials-docs> git pull Maître d'origine
De https://github.com/MicrosoftDocs/windowsserverdocs
* branche master -> FETCH_HEAD

0
kayleeFrye_onDeck