Kaip perkelti naują vietinę šaką į nuotolinę "Git" saugyklą ir ją stebėti?

Noriu, kad galėčiau atlikti šiuos veiksmus:

  1. Sukurti vietinę šaką, paremtą kita (nutolusia arba vietine) šaka (naudojant git branch arba git checkout -b).

  2. Įkelkite vietinę šaką į nuotolinę saugyklą (paskelbti), bet padarykite taip, kad ji sekama, kad git pull ir git push veiktų iš karto.

Kaip tai padaryti?

Žinau apie --set-upstream Git 1.7 versijoje, bet tai yra veiksmas po sukūrimo. Noriu rasti būdą, kaip atlikti panašų pakeitimą, kai atšaka perkeliama į nuotolinę saugyklą.

Prieš įvedant git push -u, nebuvo git push parinkties, kuri leistų gauti tai, ko norite. Reikėjo pridėti naujus konfigūracijos teiginius.

Jei sukursite naują šaką naudodami:

$ git checkout -b branchB
$ git push origin branchB:branchB

Galite naudoti git config komandą, kad nereikėtų tiesiogiai redaguoti .git/config failo.

$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB

Arba galite rankiniu būdu redaguoti .git/config failą, kad į šią šaką būtų įrašyta sekimo informacija.

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB
Komentarai (1)

Manau, kad jau esate klonavę tokį projektą kaip:

git clone http://github.com/myproject.git
  1. Tada savo vietinėje kopijoje sukurkite naują šaką ir ją patikrinkite:

     git checkout -b 
  2. Tarkime, kad savo serveryje atlikote "git bare --init" ir sukūrėte myapp.git, turėtumėte:

     git remote add origin ssh://example.com/var/git/myapp.git
     git push origin origin master
  3. Po to naudotojai turėtų galėti

     git clone http://example.com/var/git/myapp.git

PAMINĖJIMAS: Aš darau prielaidą, kad jūsų serveris yra įjungtas ir veikia. Jei ne, tai neveiks. Gera instrukcija yra čia.

PAPILDYTA

Pridėkite nutolusią šaką:

git push origin master:new_feature_name

Patikrinkite, ar viskas gerai (paimkite pradinę šaką ir sudarykite nuotolinių šakų sąrašą):

git fetch origin
git branch -r

Sukurkite vietinę šaką ir stebėkite nuotolinę šaką:

git checkout -tb new_feature_name origin/new_feature_name

Atnaujinkite viską:

git pull
Komentarai (7)

redaguoti Neaktualu, tiesiog naudokite git push -u origin $BRANCHNAME


Naudokite git publish-branchWilliam's miscellaneous Git tools (gitorious repo ir clone).

Gerai, nėra Ruby, taigi - nekreipiant dėmesio į apsaugos priemones! - paimkite tris paskutines scenarijaus eilutes ir sukurkite bash scenarijų git-publish-branch:

#!/bin/bash
REMOTE=$1 # Rewrite this to make it optional...
BRANCH=$2
# Uncomment the following line to create BRANCH locally first
#git checkout -b ${BRANCH}
git push ${ORIGIN} ${BRANCH}:refs/heads/${BRANCH} &&
git config branch.${BRANCH}.remote ${REMOTE} &&
git config branch.${BRANCH}.merge refs/heads/${BRANCH}

Tada paleiskite git-publish-branch REMOTENAME BRANCHNAME, kur REMOTENAME paprastai yra origin (scenarijų galite modifikuoti, kad origin būtų numatytoji reikšmė ir t. t.).

Komentarai (4)