Je veux pouvoir faire ce qui suit:
Créer une branche locale basée sur une autre branche (distante ou locale) (via
git branch
ougit checkout -b
)Poussez la branche locale vers le référentiel distant (publication), mais rendez-la traçable
git pull
etgit push
fonctionnera immédiatement.
Comment je fais ça?
Je sais --set-upstream
dans Git 1.7, mais c'est une action post-création. Je veux trouver un moyen d'apporter une modification similaire en poussant la branche vers le référentiel distant.
git
repository
git-branch
git-push
git-remote
Roni Yaniv
la source
la source
Réponses:
Dans Git 1.7.0 et versions ultérieures, vous pouvez extraire une nouvelle branche:
Modifier des fichiers, ajouter et valider. Poussez
-u
--set-upstream
ensuite avec l' option (abréviation de ) :Git configurera les informations de suivi pendant le push.
la source
push.default
est définie surupstream
, cela ne fera pas ce que vous pensez qu'elle fera. Il essaiera de repousser la branche de suivi existante. Utilisez:git push -u origin mynewfeature:mynewfeature
ou faites d'git branch --unset-upstream
abord.-u
option chaque fois que nous poussons la branche vers sa télécommande ou n'en avons-nous besoin que la toute première fois?-u
une seule fois pour lancer le suivi. Ensuite, utilisez simplementgit push
Si vous ne partagez pas votre repo avec d'autres, cela est utile pour pousser toutes vos branches vers la télécommande et effectuer un
--set-upstream
suivi correct pour vous:(Pas exactement ce que l'OP demandait, mais ce monoplace est assez populaire)
Si vous partagez votre repo avec d'autres, ce n'est pas vraiment une bonne forme car vous encombrerez le repo avec toutes vos branches expérimentales douteuses.
la source
git pull --all
ramène tout ailleurs? kewlgit push --all -u
?Avant l'introduction de
git push -u
, il n'y avait aucunegit push
option pour obtenir ce que vous désirez. Vous deviez ajouter de nouvelles instructions de configuration.Si vous créez une nouvelle branche en utilisant:
Vous pouvez utiliser la
git config
commande pour éviter de modifier directement le.git/config
fichier.Ou vous pouvez modifier manuellement le
.git/config
fichier pour avoir des informations de suivi dans cette branche.la source
git push origin -u local_branch:remote_branch
Autrement dit, pour créer une nouvelle succursale locale , faites:
Pour le pousser vers le référentiel distant , procédez comme suit:
la source
git branch <branch-name>
et lesgit checkout -b <branch-name>
deux créent une succursale mais passent à la nouvelle succursalesrc branch-name does not match any
Une légère variation des solutions déjà données ici:
Créez une branche locale basée sur une autre branche (distante ou locale):
Poussez la branche locale vers le référentiel distant (publication), mais rendez-la traçable
git pull
etgit push
fonctionnera immédiatementL'utilisation
HEAD
est un "moyen pratique de pousser la branche actuelle vers le même nom sur la télécommande". Source: https://git-scm.com/docs/git-push En termes Git, HEAD (en majuscules) est une référence au sommet de la branche actuelle (arborescence).L'
-u
option est juste courte pour--set-upstream
. Cela ajoutera une référence de suivi en amont pour la branche actuelle. vous pouvez le vérifier en regardant dans votre fichier .git / config:la source
git push -u origin <branch-name>
ne fonctionnait pas pour moi mais utiliserHEAD
au lieu de<branch-name>
fonctionner parfaitement :)Je fais simplement
sur un projet déjà cloné.
Git crée une nouvelle branche nommée
remoteBranchToBeCreated
sous mes commits que j'ai faits danslocalBranch
.Modifier : cela change votre branche locale actuelle (éventuellement nommée
localBranch
) en amont enorigin/remoteBranchToBeCreated
. Pour résoudre ce problème, tapez simplement:Ainsi, votre succursale locale actuelle effectue un suivi
origin/localBranch
.la source
error: src refspec <new branch> does not match any.
quand j'essaye.Je suppose que vous avez déjà cloné un projet comme:
Ensuite, dans votre copie locale, créez une nouvelle branche et vérifiez-la:
Supposons que vous ayez créé un "git bare --init" sur votre serveur et créé myapp.git, vous devez:
Après cela, les utilisateurs devraient pouvoir
REMARQUE: je suppose que votre serveur est opérationnel. Si ce n'est pas le cas, cela ne fonctionnera pas. Un bon mode d'emploi est ici .
AJOUTÉE
Ajouter une branche distante:
Vérifiez si tout va bien (récupérer l'origine et lister les branches distantes):
Créez une branche locale et suivez la branche distante:
Tout mettre à jour:
la source
git remote add origin
rend la succursale locale traçable? est-ce le commandement clé ici?git remote add origin
seulement enregistrer un nouveau référentiel distant. C'est juste une étape nécessaire avant de pousser votre branche vers ce référentiel distant (si vous ne voulez pas taper l'adresse entière à chaque fois)modifier obsolète, utilisez simplement
git push -u origin $BRANCHNAME
Utilisation à
git publish-branch
partir des divers outils Git de William ( dépôt gitieux et clone ).OK, pas de Ruby, donc - en ignorant les sauvegardes! - prendre les trois dernières lignes du script et de créer un script bash,
git-publish-branch
:Ensuite, exécutez
git-publish-branch REMOTENAME BRANCHNAME
, où REMOTENAME est généralement d'origine (vous pouvez modifier le script pour prendre l'origine par défaut, etc ...)la source
git push
et lagit config
commande du script ruby . J'ai utilisé le code du script pour modifier ma réponse. Vous pouvez utiliser ces informations pour créer un petit script shell qui effectue le nettoyage à votre place.Pour créer une nouvelle branche en dérivant d'une branche existante
puis pousser cette nouvelle branche vers le référentiel en utilisant
Cela crée et pousse tous les commits locaux vers une branche distante nouvellement créée
origin/<new_branch>
la source
Pour la version GitLab antérieure à 1.7, utilisez:
(name_branch, ex:
master
)Pour le pousser vers le référentiel distant, procédez comme suit:
(name_new_branch, par exemple:
feature
)la source
J'ai créé un alias de sorte que chaque fois que je crée une nouvelle branche, il pousse et suit la branche distante en conséquence. Je mets le morceau suivant dans le
.bash_profile
fichier:Utilisation : il suffit de taper
gcb thuy/do-sth-kool
avecthuy/do-sth-kool
mon nouveau nom de branche.la source
En s'appuyant légèrement sur les réponses ici, j'ai résumé ce processus sous la forme d'un simple script Bash, qui pourrait bien sûr également être utilisé comme alias Git.
L'ajout important pour moi est que cela m'invite à exécuter des tests unitaires avant de valider et passe par défaut le nom de la branche actuelle.
git_push_new_branch.sh
la source
Vous pouvez le faire en 2 étapes:
1. Utilisez le
checkout
pour créer la branche locale:Travaillez avec votre succursale comme vous le souhaitez.
2. Utilisez la
push
commande pour créer automatiquement la branche et envoyer le code au référentiel distant:la source
Pour une plus grande flexibilité, vous pouvez utiliser une commande Git personnalisée . Par exemple, créez le script Python suivant quelque part dans votre
$PATH
sous le nomgit-publish
et rendez-le exécutable:Ensuite
git publish -h
, vous montrera les informations d'utilisation:la source