Mám nasledujúce diaľkové ovládania v git:
origin file:///some_path/project/ (fetch)
origin file:///some_path/project/ (push)
release file:///some_other_path/project/ (fetch)
release file:///some_other_path/project/ (push)
a zavolal som:
git push --set-upstream origin --all
git remote update
keď tlačím na origin
:
git push origin
všetko funguje dobre, ale keď sa snažím tlačiť release
:
git push release
Mám nasledujúcu chybu:
fatal: You are pushing to remote "release", which is not the upstream of
your current branch "master", without telling me what to push
to update which remote branch.
Prečo?
odpovede:
3 pre odpoveď č. 1Na master
pobočka má signál, že "s remote je origin/master
. Môžete vidieť cez git config -l
:
branch.master.remote=origin
branch.master.merge=refs/heads/master
Týmto spôsobom, git push
vie, na ktoré vzdialenej pobočky by mala tlačiť zmeny bez nutnosti zadať explicitne.
Skúste určiť vzdialených vetiev na tlak, aby release
: git push release master
.
2 pre odpoveď č. 2
Musíte povedať git push
ktoré vetvy chcete tlačiť, a kde sa obrátiť.
Nie je dva spôsoby, ako dosiahnuť tento:
- Explicitne: Môžete explicitne povedať
git push
čo robiť s použitím úplnej syntaxegit push <repository> <refspec>
. "refspec" je zvyčajne formulára<local branch>:<remote branch>
. Takže vo vašom prípadegit push release master:master
by push vaše miestne master hlavej vetve "release". - Implicitne: Ak chcete vždy aktuálna vetva Zatlaãením Konár s rovnakým názvom v vzdialené úložisko, môžete povedať, git.Vykonáte to nastaviť pref ("push.default=current"
git config --local push.default current
). potomgit push release
bude fungovať a bude tlačiť lokálnej vzdialenej Predloha.
O tom, prečo to nefunguje vo vašom prípade: vyzerá to, že ste nastavili "push.default=simple" (alebo "proti prúdu") vo vašej konfigurácii.Potom git sa očakávať, že budete tlačiť na pobočku "s nahor, a inak sa sťažovať.