Zamiast robić:
git push origin --all && git push nodester --all && git push duostack --all
Czy można to zrobić za pomocą tylko jednego polecenia?
Dzięki :)
allpilota do obsługi wszystkich pilotów, patrz: stackoverflow.com/a/18637593/802365
Zamiast robić:
git push origin --all && git push nodester --all && git push duostack --all
Czy można to zrobić za pomocą tylko jednego polecenia?
Dzięki :)
allpilota do obsługi wszystkich pilotów, patrz: stackoverflow.com/a/18637593/802365
Odpowiedzi:
git remote | xargs -L1 git push --all
Zastąp mastergałąź, którą chcesz wypchnąć.
git remote | xargs -L1 -I R git push R master
git config --global alias.pushall '!git remote | xargs -L1 git push --all'
Uruchomienie git pushallspowoduje teraz przekazanie wszystkich gałęzi do wszystkich pilotów.
xargs: illegal option -- lOSX. git remote | xargs -L1 git push
man xargsmówi , że opcja -ljest przestarzała, ponieważ nie ma jej w specyfikacji POISX.
!oznacza, że poniższe polecenie nie jest wewnętrznym poleceniem git, ale zewnętrznym poleceniem powłoki.
Utwórz allzdalny z kilkoma adresami URL repo do jego nazwy:
git remote add all origin-host:path/proj.git
git remote set-url --add all nodester-host:path/proj.git
git remote set-url --add all duostack-host:path/proj.git
Więc po prostu git push all --all.
Tak to wygląda w .git/config:
[remote "all"]
url = origin-host:path/proj.git
url = nodester-host:path/proj.git
url = duostack-host:path/proj.git
git fetch --allzaraz po wykonaniu takiego pushu.
allzdalnego, gdy git remote | xargs -L1 git push --allbędą one dostępne, podczas gdy automatycznie będą zbierać nowe piloty.
allwysyłaniu zatwierdzenia, po prostu użyj „origin” zamiast „all”:git remote set-url --add origin nodester-host:path/proj.git
git pushnie zaktualizuje wszystkich adresów URL. odpowiedź odpowiednio zaktualizowana
Jeśli chcesz zawsze wypychać repo1, repo2 i repo3, ale zawsze wyciągaj tylko z repo1, ustaw zdalne „pochodzenie” jako
[remote "origin"]
url = https://exampleuser@example.com/path/to/repo1
pushurl = https://exampleuser@example.com/path/to/repo1
pushurl = https://exampleuser@example.com/path/to/repo2
pushurl = https://exampleuser@example.com/path/to/repo3
fetch = +refs/heads/*:refs/remotes/origin/*
Skonfiguruj w wierszu polecenia:
$ git remote add origin https://exampleuser@example.com/path/to/repo1
$ git remote set-url --push --add origin https://exampleuser@example.com/path/to/repo1
$ git remote set-url --push --add origin https://exampleuser@example.com/path/to/repo2
$ git remote set-url --push --add origin https://exampleuser@example.com/path/to/repo3
Jeśli tylko chcesz ciągnąć od repo1, ale push to repo1i repo2 dla konkretnej branżyspecialBranch :
[remote "origin"]
url = ssh://git@aaa.xxx.com:7999/yyy/repo1.git
fetch = +refs/heads/*:refs/remotes/origin/*
...
[remote "specialRemote"]
url = ssh://git@aaa.xxx.com:7999/yyy/repo1.git
pushurl = ssh://git@aaa.xxx.com:7999/yyy/repo1.git
pushurl = ssh://git@aaa.xxx.com:7999/yyy/repo2.git
fetch = +refs/heads/*:refs/remotes/origin/*
...
[branch "specialBranch"]
remote = origin
pushRemote = specialRemote
...
Zobacz https://git-scm.com/docs/git-config#git-config-branchltnamegtremote .
git pushbez żadnych argumentów.
Jako alternatywa interfejsu CLI do edycji pliku .git / config, możesz użyć następujących poleceń:
# git remote add all origin-host:path/proj.git
# git remote set-url --add all nodester-host:path/proj.git
# git remote set-url --add all duostack-host:path/proj.git
To samo git push all --alldziała tutaj.
Osiągnąłeś to samo co odpowiedź nr 1. Właśnie to zrobiłeś za pomocą wiersza poleceń zamiast surowej edycji pliku konfiguracyjnego.
Napisałem funkcję krótkiego uderzenia, aby wcisnąć wiele pilotów za jednym razem. Możesz określić jednego pilota jako parametr, wiele pilotów oddzielonych spacjami lub nie podawać żadnego, który będzie przekazywał wszystkie piloty.
Można to dodać do pliku .bashrc lub .bash_profile.
function GitPush {
REMOTES=$@
# If no remotes were passed in, push to all remotes.
if [[ -z "$REMOTES" ]]; then
REM=`git remote`
# Break the remotes into an array
REMOTES=$(echo $REM | tr " " "\n")
fi
# Iterate through the array, pushing to each remote
for R in $REMOTES; do
echo "Pushing to $R..."
git push $R
done
}
Przykład: załóżmy, że twoje repo ma 3 piloty: rem1, rem2 i rem3.
# Pushes to rem1
GitPush rem1
# Pushes to rem1 and rem2
GitPush rem1 rem2
# Pushes to rem1, rem2 and rem3
GitPush
Możesz używać haczyków git - szczególnie pre-push: dodawaj pchnięcia nie pochodzące od .git/hooks/pre-push.