Mam projekt hostowany na GitHub, który ktoś rozwidlił. Na swoim widelcu utworzyli nową gałąź „foo” i wprowadzili pewne zmiany. Jak przeciągnąć ich „foo” do nowej gałęzi o nazwie „foo” w moim repozytorium?
Rozumiem, że mogą przesłać mi prośbę o wycofanie, ale sam chciałbym zainicjować ten proces.
Załóż, że:
- Ponieważ rozwidlili mój projekt, oba nasze repozytoria mają tę samą „historię”
- Chociaż GitHub pokazuje, że ich projekt został rozwidlony z mojego, moje lokalne repozytorium nie ma żadnych odniesień do projektu tej osoby. Czy muszę dodać ich jako pilota?
- Nie mam jeszcze gałęzi o nazwie „foo” - nie wiem, czy najpierw muszę to ręcznie utworzyć.
- Zdecydowanie chcę, aby zostało to wciągnięte do oddzielnej gałęzi, a nie mojego mistrza.
źródło
git://
adresu URL ze strony repozytorium GitHub drugiej osoby zamiast//path/to/coworkers/repo.git
. (Opisanie tego sprawiło, że moja odpowiedź była zbyt wolna;))Nie, nie musisz dodawać ich jako pilota. Byłoby to nieporęczne i trudne do zrobienia za każdym razem.
Chwytając swoje zobowiązania:
Spowoduje to utworzenie lokalnego oddziału o nazwie
ournameforbranch
dokładnie takiej samej, jaktheirbranch
dla niego. Na przykład w pytaniu byłby ostatni argumentfoo:foo
.Uwaga:
:ournameforbranch
część można jeszcze pominąć, jeśli wymyślenie nazwy, która nie jest sprzeczna z jedną z twoich gałęzi, jest uciążliwe. W takim przypadku wywoływane odwołanieFETCH_HEAD
jest dostępne. Możeszgit log FETCH_HEAD
zobaczyć ich zobowiązania, a następnie robić rzeczy, takie jakcherry-picked
wiśnia, wybierać ich zobowiązania.Przekazywanie go z powrotem do nich:
Często chcesz coś naprawić i odepchnąć. To też możliwe:
Jeśli martwi Cię praca w stanie odłączonym , za wszelką cenę utwórz gałąź, używając
:ournameforbranch
i zamieńFETCH_HEAD
iHEAD
powyżej naournameforbranch
.źródło
master
oddział)git branch -m newbranch
w tym odłączonym stanie, git straci rozum i zacznie mówić, że twoje repo nie jest już ważne.git init
wydaje się to naprawić i przywrócić cię do stanu, w jakim byłeś wcześniej, z gałęzią o nazwie „newbranch”.Jeśli odpowiedź Antaka:
daje Ci:
Następnie (zgodnie z radą Przemka D) użyj
źródło
Poniżej znajduje się przydatne rozwiązanie, które współpracuje z GitHub do sprawdzania gałęzi PR z rozwidlenia innego użytkownika. Musisz znać identyfikator żądania ściągnięcia (który GitHub wyświetla wraz z tytułem PR).
Przykład:
Naprawa niepewnego kodu nr 8
Alicja chce scalić 1 zatwierdzenie
your_repo:master
zher_repo:branch
Zamień pilota, jeśli jest inny niż
origin
.Zastąp
8
poprawnym identyfikatorem żądania ściągnięcia.źródło
GitHub ma nową opcję w stosunku do poprzednich odpowiedzi, wystarczy skopiować / wkleić wiersze poleceń z PR:
Merge
lubSquash and merge
view command line instructions
źródło
Jeśli rozwidlone repozytorium jest chronione, więc nie możesz wcisnąć go bezpośrednio, a Twoim celem jest wprowadzenie zmian w jego foo, musisz wprowadzić do repo ich gałęzi foo w następujący sposób:
Teraz masz lokalną kopię foo bez powiązanego z nią wcześniejszego programu. Możesz zatwierdzić zmiany (lub nie), a następnie wypchnąć foo do własnego zdalnego repozytorium.
Teraz foo jest w Twoim repozytorium na GitHub, a lokalny foo go śledzi. Jeśli nadal wprowadzają zmiany w foo, możesz pobrać ich i połączyć się z foo.
źródło