Chcę móc wykonać następujące czynności:
Utwórz oddział lokalny na podstawie innego (zdalnego lub lokalnego) oddziału (przez
git branch
lubgit checkout -b
)Wciśnij oddział lokalny do zdalnego repozytorium (publikuj), ale spraw, aby można go było śledzić
git pull
igit push
będzie działać natychmiast.
Jak mogę to zrobić?
Wiem o tym --set-upstream
w Git 1.7, ale jest to akcja po stworzeniu. Chcę znaleźć sposób na dokonanie podobnej zmiany podczas wypychania gałęzi do zdalnego repozytorium.
git
repository
git-branch
git-push
git-remote
Roni Yaniv
źródło
źródło
Odpowiedzi:
W Git 1.7.0 i nowszych możesz pobrać nową gałąź:
Edytuj pliki, dodawaj i zatwierdzaj. Następnie naciśnij
-u
--set-upstream
opcję (skrót od ) :Git skonfiguruje informacje o śledzeniu podczas wypychania.
źródło
push.default
jest ustawiona naupstream
, nie zrobi tego, co według ciebie zrobi. Spróbuje przerzucić istniejącą gałąź śledzenia. Użyj:git push -u origin mynewfeature:mynewfeature
lub zróbgit branch --unset-upstream
pierwszy.-u
opcji za każdym razem, gdy pchamy gałąź do jej pilota, czy potrzebujemy jej tylko za pierwszym razem?-u
raz, aby rozpocząć śledzenie. Następnie użyjgit push
Jeśli nie udostępniasz repozytorium innym osobom, przydatne jest wypchnięcie wszystkich gałęzi do pilota i
--set-upstream
prawidłowe śledzenie:(Nie do końca to, o co prosił PO, ale ten jednowarstwowy jest dość popularny)
Jeśli dzielisz się repozytorium z innymi, nie jest to naprawdę dobra forma, ponieważ zapchasz repo wszystkimi swoimi podejrzanymi gałęziami eksperymentalnymi.
źródło
git pull --all
wyciąga to wszystko gdzie indziej? kewlgit push --all -u
?Przed wprowadzeniem
git push -u
nie byłogit push
możliwości uzyskania tego, czego pragniesz. Trzeba było dodać nowe instrukcje konfiguracji.Jeśli utworzysz nowy oddział za pomocą:
Możesz użyć
git config
polecenia, aby uniknąć bezpośredniej edycji.git/config
pliku.Możesz też ręcznie edytować
.git/config
plik, aby mieć informacje o śledzeniu do tej gałęzi.źródło
git push origin -u local_branch:remote_branch
Mówiąc prosto, aby utworzyć nowy oddział lokalny , wykonaj:
Aby przekazać go do zdalnego repozytorium, wykonaj:
źródło
git branch <branch-name>
igit checkout -b <branch-name>
oba tworzą oddział, ale kasa przechodzi do nowego oddziałusrc branch-name does not match any
Niewielka różnorodność podanych tutaj rozwiązań:
Utwórz oddział lokalny na podstawie innego (zdalnego lub lokalnego) oddziału:
Wciśnij oddział lokalny do zdalnego repozytorium (publikuj), ale spraw, aby można go było śledzić
git pull
igit push
będzie działać natychmiastUżycie
HEAD
to „wygodny sposób na przesunięcie bieżącej gałęzi do tej samej nazwy na pilocie”. Źródło: https://git-scm.com/docs/git-push W terminologii Git HEAD (wielkimi literami) jest odniesieniem do górnej części bieżącej gałęzi (drzewa).Ta
-u
opcja jest po prostu krótka--set-upstream
. Spowoduje to dodanie referencji śledzenia w górę dla bieżącej gałęzi. możesz to sprawdzić, przeglądając plik .git / config:źródło
git push -u origin <branch-name>
nie działało dla mnie, ale używanieHEAD
zamiast<branch-name>
działało idealnie :)Po prostu robię
nad już sklonowanym projektem.
Git tworzy nowy oddział o nazwie
remoteBranchToBeCreated
pod moimi zobowiązaniami, które zrobiłemlocalBranch
.Edycja : zmienia bieżący oddział lokalny (ewentualnie nazwany
localBranch
) w góręorigin/remoteBranchToBeCreated
. Aby to naprawić, po prostu wpisz:Więc twój obecny oddział lokalny śledzi teraz
origin/localBranch
.źródło
error: src refspec <new branch> does not match any.
kiedy próbuję tego.Przypuszczam, że już sklonowałeś projekt taki jak:
Następnie w lokalnej kopii utwórz nowy oddział i sprawdź go:
Załóżmy, że utworzyłeś „git bare --init” na swoim serwerze i utworzyłeś myapp.git, powinieneś:
Następnie użytkownicy powinni mieć możliwość
UWAGA: Zakładam, że masz uruchomiony serwer. Jeśli nie jest, nie będzie działać. Dobre instrukcje są tutaj .
DODANY
Dodaj zdalną gałąź:
Sprawdź, czy wszystko jest w porządku (pobierz źródło i zdalne gałęzie):
Utwórz oddział lokalny i śledź oddział zdalny:
Zaktualizuj wszystko:
źródło
git remote add origin
śledzenie lokalnego oddziału jest możliwe? czy to jest tutaj kluczowe polecenie?git remote add origin
tylko zarejestruj nowe zdalne repozytorium. Jest to tylko krok potrzebny do wypchnięcia oddziału do tego zdalnego repozytorium (jeśli nie chcesz za każdym razem wpisywać całego adresu)edytuj Nieaktualne, po prostu użyj
git push -u origin $BRANCHNAME
Skorzystaj
git publish-branch
z różnych narzędzi Git Williama ( genialne repo i klonowanie ).OK, nie Ruby, więc - ignorując zabezpieczenia! - weź trzy ostatnie wiersze skryptu i utwórz skrypt bash
git-publish-branch
:Następnie uruchom
git-publish-branch REMOTENAME BRANCHNAME
, gdzie REMOTENAME to zazwyczaj origin (możesz zmodyfikować skrypt, aby przyjmował pochodzenie jako domyślny itp.)źródło
git push
igit config
polecenia skryptów ruby . Użyłem kodu skryptu do edycji mojej odpowiedzi. Możesz użyć tych informacji do stworzenia małego skryptu powłoki, który robi dla ciebie pompkę.Aby utworzyć nowy oddział poprzez rozgałęzienie z istniejącego oddziału
a następnie wypchnij ten nowy oddział do repozytorium za pomocą
Spowoduje to utworzenie i przekazanie wszystkich zatwierdzeń lokalnych do nowo utworzonego zdalnego oddziału
origin/<new_branch>
źródło
W przypadku wersji GitLab wcześniejszej niż 1.7 użyj:
(name_branch, ex:
master
)Aby przekazać go do zdalnego repozytorium, wykonaj:
(name_new_branch, na przykład:
feature
)źródło
Utworzyłem alias, aby za każdym razem, gdy utworzyłem nowy oddział, odpowiednio go popychał i śledził. Do
.bash_profile
pliku wstawiłem następujący fragment :Zastosowanie : wystarczy wpisać za
gcb thuy/do-sth-kool
pomocąthuy/do-sth-kool
to moja nowa nazwa oddziału.źródło
Opierając się nieco na odpowiedziach tutaj, podsumowałem ten proces jako prosty skrypt Bash, który oczywiście może być również używany jako alias Git.
Ważnym dodatkiem do mnie jest to, że zachęca mnie to do przeprowadzenia testów jednostkowych przed zatwierdzeniem i domyślnie podaje aktualną nazwę oddziału.
git_push_new_branch.sh
źródło
Możesz to zrobić w 2 krokach:
1. Użyj
checkout
do utworzenia lokalnego oddziału:Pracuj ze swoim Oddziałem, jak chcesz.
2. Użyj
push
polecenia, aby automatycznie utworzyć gałąź i wysłać kod do zdalnego repozytorium:źródło
Aby uzyskać największą elastyczność, możesz użyć niestandardowego polecenia Git . Na przykład utwórz następujący skrypt w języku Python gdzieś
$PATH
pod nazwągit-publish
i wykonaj go:Następnie
git publish -h
pokaże ci informacje o użyciu:źródło