2012-03-22 21 views
7

Mam trzy gałęzie (nazwijmy je wzorcem, testowaniem i funkcją). Wszystkie trzy są udostępniane, więc nie mogę zmienić żadnego z nich bez powodowania problemów dla innych. Obecnie wszystkie trzy gałęzie są rozbieżne (żadna nie jest fast-forward), więc ostatecznie połączenie będzie musiało zostać wykonane, ponieważ zmiana nie jest opcją.Git scalanie pojedynczego pliku bez zmiany nazwy

Na razie jednak chciałbym pobrać Makefile z testowania do funkcji, ponieważ funkcja została oderwana od master, a Makefile został dodany w testach. Zrobię jednak , a nie, ale chcę połączyć się z dowolnymi innymi zmianami między dwoma oddziałami.

Rozumiem, że jeśli po prostu dodaję plik Makefile do funkcji, spowoduje to konflikty podczas scalania funkcji z powrotem w testowanie (a następnie opanowanie), szczególnie jeśli wprowadzę dalsze dodatki do pliku Makefile w mojej gałęzi funkcji .

Mogę zrobić git-cherry-pick; jednak w Makefile było wiele poprawek w testowaniu i zakładam, że jest lepszy sposób niż próbowanie wyboru wszystkich tych zatwierdzeń.

Odpowiedz

12

Można po prostu zrobić

git checkout branch_name <path(s)>

To może załadować konkretny plik, ale można również używać symboli wieloznacznych i katalogów

zauważyć, że:

  • Ścieżki są względne
  • Ścieżka sprawia, że ​​git nie przełącza gałęzi, więc możesz po prostu zatwierdzić po pobraniu file:
+0

Wow - użyłem kasy zarówno do przełączania się do zatwierdzenia przez jego SHA, jak i do pliku wracającego z powrotem do HEAD, ale nie zdawałem sobie sprawy, że można połączyć te dwie drogi. Jest to raczej oczywiste z perspektywy czasu, ale dzięki! – chimeracoder