Πώς μπορώ να προωθήσω έναν νέο τοπικό κλάδο σε ένα απομακρυσμένο αποθετήριο Git και να τον παρακολουθήσω επίσης;

Θέλω να μπορώ να κάνω τα εξής:

  1. Δημιουργία ενός τοπικού κλάδου με βάση κάποιον άλλο (απομακρυσμένο ή τοπικό) κλάδο (μέσω git branch ή git checkout -b)

  2. Μεταφέρετε τον τοπικό κλάδο στο απομακρυσμένο αποθετήριο (δημοσίευση), αλλά κάντε το παρακολουθήσιμο, ώστε τα git pull και git push να λειτουργούν αμέσως.

Πώς το κάνω αυτό;

Γνωρίζω για το --set-upstream στο Git 1.7, αλλά αυτό είναι μια ενέργεια μετά τη δημιουργία. Θέλω να βρω έναν τρόπο να κάνω μια παρόμοια αλλαγή κατά την ώθηση του κλάδου στο απομακρυσμένο αποθετήριο.

Πριν από την εισαγωγή του git push -u, δεν υπήρχε η επιλογή git push για να αποκτήσετε αυτό που επιθυμείτε. Έπρεπε να προσθέσετε νέες δηλώσεις διαμόρφωσης.

Αν δημιουργήσετε ένα νέο κλάδο χρησιμοποιώντας:

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

Μπορείτε να χρησιμοποιήσετε την εντολή git config για να αποφύγετε την απευθείας επεξεργασία του αρχείου .git/config.

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

Ή μπορείτε να επεξεργαστείτε χειροκίνητα το αρχείο .git/config για να έχετε πληροφορίες παρακολούθησης σε αυτόν τον κλάδο.

[branch "branchB"]
    remote = origin
    merge = refs/heads/branchB
Σχόλια (1)

Υποθέτω ότι έχετε ήδη κλωνοποιήσει ένα έργο όπως:

git clone http://github.com/myproject.git
  1. Στη συνέχεια, στο τοπικό σας αντίγραφο, δημιουργήστε έναν νέο κλάδο και ελέγξτε τον:

     git checkout -b 
Σχόλια (7)

edit Ξεπερασμένη, απλά χρησιμοποιήστε git push -u origin $BRANCHNAME


Χρησιμοποιήστε το git publish-branch από το William's miscellaneous Git tools (gitorious repo και clone).

Εντάξει, δεν υπάρχει Ruby, οπότε - αγνοώντας τις δικλείδες ασφαλείας! - πάρτε τις τρεις τελευταίες γραμμές του σεναρίου και δημιουργήστε ένα σενάριο bash, 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}

Στη συνέχεια, εκτελέστε το git-publish-branch REMOTENAME BRANCHNAME, όπου REMOTENAME είναι συνήθως το origin (μπορείτε να τροποποιήσετε το σενάριο ώστε να παίρνει το origin ως προεπιλογή, κλπ...)

Σχόλια (4)