Létrehoztam egy helyi ágat, amelyet 'push' felfelé akarok tolni. Van egy hasonló kérdés itt a Stack Overflow-n, hogy hogyan lehet nyomon követni egy újonnan létrehozott távoli ágat.
Az én munkafolyamatom azonban kissé más. Először egy helyi ágat akarok létrehozni, és csak akkor fogom upstreamre tolni, amikor elégedett vagyok, és meg akarom osztani az ágamat.
FELSZÓLÍTÁS A Git 2.0-val van egy egyszerűbb válasz Az alábbiakban írtam: https://stackoverflow.com/a/27185855/109305.
Először helyben hozza létre az ágat:
git checkout -b <branch-name> # Create a new branch and check it out
A távoli ág automatikusan létrejön, amikor a távoli kiszolgálóra tolod. Tehát amikor úgy érzed, hogy készen állsz rá, akkor csak csináld:
git push <remote-name> <branch-name>
Ahol a <remote-name>
tipikusan az origin
, vagyis az a név, amit a git ad a távoli ágnak, ahonnan klónoztál. A kollégáid ezután csak húzzák ezt az ágat, és az automatikusan létrejön helyben.
Megjegyezzük azonban, hogy formálisan a formátum a következő:
git push <remote-name> <local-branch-name>:<remote-branch-name>
Ha azonban az egyiket kihagyja, akkor azt feltételezi, hogy mindkét ág neve azonos. Mindezek után óvatosan, ne kövesse el azt a kritikus hibát, hogy csak a `:<távoli-ág-név>-t (kettősponttal) adja meg, különben a távoli ág törlődik!
Annak érdekében, hogy egy későbbi git pull
tudja, mit kell tennie, érdemes inkább a következőt használni:
git push --set-upstream <remote-name> <local-branch-name>
Az alábbiakban leírtak szerint a --set-upstream
opció létrehoz egy upstream ágat:
Minden olyan ághoz, amely naprakész vagy sikeresen elküldve, hozzáad egy upstream ágat. (nyomon követési) hivatkozást, amelyet a argumentum nélküli git-pull(1) és egyéb parancsok.
Először is, helyben kell létrehoznia az ágat
git checkout -b your_branch
Ezután dolgozhatsz lokálisan az ágadban, és amikor készen állsz az ág megosztására, akkor pushold azt. A következő parancs az ágat a távoli tároló eredetére tolja és követi azt
git push -u origin your_branch
A csapattársak elérhetik az ágadat, ezzel:
git fetch
git checkout origin/your_branch
Folytathatod a munkát az ágban, és bármikor tolhatod, amikor csak akarod, anélkül, hogy érveket adnál át a git push-nak (az érv nélküli git push a master-t a távoli master-re, a your_branch local-t a távoli your_branch-ra, stb...).
git push
A csapattársak a te ágadba pusholhatnak úgy, hogy commitokat végeznek, majd explicit módon pusholnak.
... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch
Vagy követhetik az ágat, hogy elkerüljék a git push érveit.
git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push
Ahogy az előző válaszokban is szerepel,
git push <remote-name> <local-branch-name>:<remote-branch-name>
elég egy helyi ág tolására.
A kollégáid, ezzel a paranccsal az összes távoli ágat (beleértve az újakat is) kihúzhatják:
git remote update
Ezután az ágon történő változtatáshoz a szokásos folyamattal:
git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>