Ik wil in staat zijn om het volgende te doen:
Maak een lokale branch gebaseerd op een andere (remote of lokale) branch (via git branch
of git checkout -b
)
Push de lokale branch
naar het remote repository (publiceren), maar maak het
traceerbaar zodat git pull
en git push
direct zullen werken.
Hoe moet ik dat doen?
Ik weet van --set-upstream
in Git 1.7, maar dat is een post-creatie actie. Ik wil een manier vinden om een soortgelijke verandering aan te brengen als ik de branch naar het remote repository push.
Vóór de introductie van git push -u
, was er geen git push
optie om te krijgen wat u wenst. Je moest nieuwe configuratie statements toevoegen.
Als u een nieuwe branch aanmaakt met:
$ git checkout -b branchB
$ git push origin branchB:branchB
Je kunt het git config
commando gebruiken om te voorkomen dat je direct het .git/config
bestand moet bewerken.
$ git config branch.branchB.remote origin
$ git config branch.branchB.merge refs/heads/branchB
Of je kunt handmatig het .git/config
bestand bewerken om volginformatie naar deze branch te sturen.
[branch "branchB"]
remote = origin
merge = refs/heads/branchB
Ik veronderstel dat je al een project gekloond hebt zoals:
git clone http://github.com/myproject.git
Maak dan in je lokale kopie een nieuwe branch aan en controleer het:
git checkout -b <newbranch>
Veronderstel dat je een "git bare --init" op je server hebt gemaakt en de myapp.git hebt aangemaakt, dan zou je:
git remote add origin ssh://example.com/var/git/myapp.git
git push origin master
Daarna zouden gebruikers in staat moeten zijn om
git clone http://example.com/var/git/myapp.git
LET OP: Ik'* ga ervan uit dat je je server aan de praat hebt. Als dat niet zo is, zal het niet werken. Een goede how-to is hier.
Voeg een remote branch toe:
git push origin master:new_feature_name
Controleer of alles goed is (haal Origin op en maak een lijst van remote branches):
git fetch origin
git branch -r
Maak een lokale branch aan en volg de remote branch:
git checkout -tb new_feature_name origin/new_feature_name
Werk alles bij:
git pull
edit Outdated, gebruik gewoon git push -u origin $BRANCHNAME
Gebruik git publish-branch
van William's miscellaneous Git tools (gitorious repo en clone).
OK, geen Ruby, dus - de beveiligingen negerend! - neem de laatste drie regels van het script en maak een bash script, 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}
Voer dan git-publish-branch REMOTENAME BRANCHNAME
uit, waarbij REMOTENAME meestal origin is (je kunt het script aanpassen om origin als standaard te nemen, enz...)