2013-04-26 17 views
110

Pracuję nad gałęzią Git, która ma kilka uszkodzonych testów i chciałbym pobrać (scalić zmiany, a nie tylko zastąpić) te testy z innej gałęzi, w której są już naprawione.Czy można pobrać tylko jeden plik w Git?

wiem, że mogę zrobić

git pull origin that_other_branch 

ale będzie próbować połączyć wiele innych plików, na które nie jestem jeszcze gotowa.

Czy można pobrać i połączyć tylko określony plik (i nie wszystko) z innego oddziału?

To nie jest duplikatem Git pull request for just one file jak wszystkie odpowiedzi na to pytanie, jak można przywrócić lokalnie zmieniony plik do wersji repozytorium, bez zmieniania żadnych oddziałów.

Odpowiedz

99

można pobrać a następnie sprawdzić tylko jeden plik w ten sposób:

git fetch 
git checkout -m <revision> <yourfilepath> 
git add <yourfilepath> 
git commit 

Odnośnie polecenia git checkout: <revision> - nazwa oddziału, tj origin/master <yourfilepath> nie zawierają nazwę repozytorium (które można uzyskać po kliknięciu przycisku copy path na stronie pliku na GitHub), tj. README.md

+19

Hasła wymagane przez przełącznik -m można wydrukować z odgałęzieniem git -v. Niesamowite! – h22

+2

Doskonały. To pomogło mi w więcej niż jednej okazji. Aby wyjaśnić, flaga -m wydaje się być zadowolona z wartości skrótu zatwierdzenia, z którego chcesz pobrać pojedynczy plik. – rd108

+1

To zadziałało również dla mnie. Mimo to, uruchomiłem git log na mojej zdalnej gałęzi, aby znaleźć odwrócenie: np. $ git log remote/origin/master – Dan

190

Oto nieco łatwiejsza metoda, którą właśnie wymyśliłem badanie tego:

git fetch {remote} 
git checkout FETCH_HEAD -- {file} 
+2

To jest poprawna odpowiedź – Picrasma

+2

fatal: invalid reference: FETCH_HEAD –

Powiązane problemy