Mam więc repozytorium git, które sklonowałem ze źródła na ghithub. Wprowadziłem do niego kilka zmian (niezaangażowanych i w gałęzi master). Chcę przesunąć moje zmiany na moją stronę github jako nową gałąź i sprawić, by github nadal widział to jako widelec.
Czy to jest możliwe? Jestem całkiem nowy w Git i Github. Czy moje pytanie w ogóle miało sens?
Najłatwiejszym sposobem, jaki mogę wymyślić (z pewnością jestem najbardziej zbliżony), jest rozwidlenie repo na github. Klonuj go lokalnie do innego katalogu. Dodaj repozytorium początkowe. Utwórz gałąź w tym nowym rozwidlonym repozytorium. Skopiuj ręcznie moje zmiany kodu do nowego lokalnego repozytorium. A potem popchnij to z powrotem do mojego githuba.
Czy jest to powszechny przypadek użycia, w którym istnieje prostszy sposób na zrobienie tego bez powielania katalogów?
Chyba pytam tutaj w przeciwieństwie do SO, ponieważ korzystam z Linuksa, używając git z linii poleceń, a ludzie tutaj dają lepsze odpowiedzi imo =]
źródło
Odpowiedzi:
Możesz to wszystko zrobić z istniejącego repozytorium (nie trzeba klonować rozwidlenia do nowego (lokalnego) repozytorium, utworzyć oddział, skopiować zatwierdzenia / zmiany itp.).
Przygotuj swoje zobowiązania do publikacji.
Udoskonal wszystkie istniejące lokalne zatwierdzenia (np. Za pomocą
git commit --amend
i / lubgit rebase --interactive
).Zatwierdź dowolne niezatwierdzone zmiany, które chcesz opublikować (nie jestem pewien, czy chciałeś zasugerować, że masz pewne zatwierdzenia w lokalnym systemie głównym i niektóre niezatwierdzone zmiany lub tylko niektóre niezatwierdzone zmiany; nawiasem mówiąc, niezatwierdzone zmiany nie są „ gałąź ”, są one ściśle w twoim drzewie roboczym).
Zmień nazwę swojego głównej gałęzi, aby nadać jej nazwę, którą chcesz utworzyć dla „nowej gałęzi”. Nie jest to absolutnie konieczne (możesz przepchnąć z dowolnej gałęzi do dowolnej innej gałęzi), ale prawdopodobnie zmniejszy to zamieszanie na dłuższą metę, jeśli lokalna gałąź i gałąź w rozwidleniu GitHub mają tę samą nazwę.
Rozwidlaj poprzednie repozytorium GitHub
(np.)
github.com:UpstreamOwner/repostory_name.git
Jako(np
github.com:YourUser/repository_name.git
. ) .Odbywa się to na stronie internetowej GitHub (lub „kliencie” korzystającym z interfejsów API GitHub), nie są w to zaangażowane żadne lokalne polecenia Git.
W twoim lokalnym repozytorium (tym, które zostało pierwotnie sklonowane z wcześniejszego repozytorium GitHub i ma twoje zmiany w swoim głównym systemie), dodaj repozytorium wideł jako zdalne:
Wciśnij gałąź do repozytorium wideł na GitHub.
Opcjonalnie zmień nazwę pilotów, aby widelec był znany jako „origin”, a upstream jako „upstream”.
Jednym z powodów zmiany nazwy pilotów jest to, że chcesz mieć możliwość korzystania z nich
git push
bez określania repozytorium (domyślnie jest to „origin”).źródło
-u
opcji może sprawić, że lokalny oddział będziemy-feature
śledził ten sam oddział zdalnyorigin/my-feature
. Polecenie to:git push -u github my-feature
Istnieje narzędzie:
hub
Teraz możesz:
źródło