Comment créer une branche git distante?
j'ai créé une branche locale que je veux "pousser" en amont. Il y a une question similaire ici sur le débordement de la pile sur la façon de suivre une branche distante nouvellement créée.
cependant, mon flux de travail est légèrement différent. Première je veux créer une branche locale, et je ne le pousser en amont lorsque je suis satisfait et que vous voulez partager ma branche.
- Comment faire? (mes recherches sur google n'ont pas semblé donner quoi.)
- Comment dire à mes collègues de le retirer du dépôt amont?
mise à jour avec Git 2.0 Il y a une réponse plus simple j'ai écrit ci-dessous: https://stackoverflow.com/a/27185855/109305
17 réponses
d'abord, vous créez votre succursale localement:
git checkout -b <branch-name> # Create a new branch and check it out
la branche distante est créée automatiquement lorsque vous la poussez sur le serveur distant. Donc quand vous vous sentez prêt pour cela, vous pouvez juste faire:
git push <remote-name> <branch-name>
où <remote-name>
est typiquement origin
, le nom que git donne à la télécommande d'où vous avez cloné. Vos collègues pourraient alors simplement tirer cette branche, et elle est automatiquement créée localement.
Note toutefois que formellement, le format est:
git push <remote-name> <local-branch-name>:<remote-branch-name>
mais si vous en omettez une, Cela suppose que les noms des deux branches sont les mêmes. Ceci étant dit, comme un mot de attention , ne faites pas l'erreur critique de spécifier seulement :<remote-branch-name>
(avec le deux-points), ou la branche distante sera supprimée!
pour qu'un git pull
suivant sache quoi faire, vous pourriez plutôt vouloir utiliser:
git push --set-upstream <remote-name> <local-branch-name>
As décrite ci-dessous, l'option --set-upstream
établit une branche amont:
pour chaque succursale qui est à jour ou réussi, ajouter en amont (suivi) référence, utilisé par l'argument de moins git pull(1) et d'autres commande.
d'abord, vous devez créer votre branche localement
git checkout -b your_branch
après cela, vous pouvez travailler localement dans votre branche, quand vous êtes prêt à partager la branche, poussez-la. La commande suivante pousse la branche vers l'origine du dépôt distant et la trace
git push -u origin your_branch
les coéquipiers peuvent atteindre votre branche, en faisant:
git fetch
git checkout origin/your_branch
vous pouvez continuer à travailler dans la branche et pousser quand vous voulez sans passer des arguments to git push (argumentless git push poussera le maître vers le maître distant, votre_branch local vers votre_branch distant,etc...)
git push
les coéquipiers peuvent pousser à votre branche en faisant commits puis push explicitement
... work ...
git commit
... work ...
git commit
git push origin HEAD:refs/heads/your_branch
ou suivi de la branche pour éviter les arguments à git push
git checkout --track -b your_branch origin/your_branch
... work ...
git commit
... work ...
git commit
git push
simple Git 2.0+ solution:
Que de Git 2.0 le comportement est devenu plus simple :
vous pouvez configurer git avec push.default = current
pour rendre la vie plus facile:
j'ai ajouté ceci donc maintenant je peux juste pousser une nouvelle branche en amont avec
$ git push -u
-u
traquera la branche distante du même nom. Non, avec cette configuration, vous allez deviner automatiquement la référence à distance à git push. De git.documentation de configuration :
push.par défaut
définit l'action git push devrait prendre si aucun refspec n'est explicitement donné.
push.default = current
- poussez la branche courante pour mettre à jour une branche avec même nom sur la fin de réception. Fonctionne dans les flux de travail centraux et non centraux.
pour moi, c'est une bonne simplification de mon workflow quotidien Git. Le réglage de la configuration prend en compte le cas d'utilisation "habituel" où vous ajoutez une branche localement et que vous voulez la créer à distance. En outre, je peux tout aussi facilement créer des branches locales à partir de télécommandes en faisant simplement git co remote_branch_name
(au lieu d'utiliser le drapeau --set-upstream-to
).
je sais que cette question et les réponses acceptées sont assez anciennes, mais le comportement a changé de sorte que maintenant, les options de configuration existent pour simplifier votre flux de travail.
pour ajouter à votre configuration git globale, Lancez ceci sur la ligne de commande:
$ git config --global push.default current
comme indiqué dans les réponses précédentes,
git push <remote-name> <local-branch-name>:<remote-branch-name>
est suffisant pour pousser une branche locale.
vos collègues, peuvent tirer toutes les branches distantes (y compris les nouvelles) avec cette commande:
git remote update
puis, pour faire des changements sur la branche, le flux habituel:
git checkout -b <local-branch-name> <remote-name>/<remote-branch-name>
créer une nouvelle branche locale basée sur la branche actuelle:
git checkout -b newbranch
valider toutes les modifications que vous le feriez normalement. Puis, le pousser en amont:
git push -u origin HEAD
c'est un raccourci pour pousser la branche courante à une branche du même nom sur origin
et la suivre pour que vous n'ayez pas besoin de spécifier origin HEAD
dans le futur.
si vous voulez créer une branche distante sans avoir la branche locale, vous pouvez le faire comme ceci:
git push origin HEAD:refs/heads/foo
il pousse tout ce qui est votre tête à la branche foo qui n'existait pas sur la télécommande.
si vous voulez créer une branche à partir de la branche actuelle
git checkout -b {your_local_branch_name}
vous voulez une branche de la branche distante, vous pouvez essayer
git checkout -b {your_local_branch_name} origin/<remote_branch_name>
si vous avez fait des modifications, vous pouvez ajouter le fichier.
git add -A or git add <each_file_names>
puis faire un commit Local
git commit -m 'your commit message'
quand vous voulez appuyer sur repo à distance
git push -u origin <your_local_branch_name>
tous ensemble sera
git checkout -b bug_fixes
ou Si vous voulez créer une branche à partir d'une branche distante, dites développement
git checkout -b bug_fixes origine/ développement
Vous pouvez pousser la direction à distance repo par
git push -u origin **bug_fixes**
N'importe quand vous voulez mettre à jour votre branche de n'importe quelle autre branche dire master .
git pull origin master
.
vous créez D'abord la branche localement:
git checkout -b your_branch
et ensuite de créer la branche à distance:
git push --set-upstream origin your_branch
Note: cela fonctionne sur les versions latests de git:
$ git --version
git version 2.3.0
santé!
Solution La Plus Facile... Drumm Roll . Git version 2.10.1 (Apple Git-78)
1) git checkout -b localBranchNameThatDoesNotExistInRemote
2) Do your changes , and go a git commit
3) git push origin localBranchNameThatDoesNotExistInRemote --force
N.B. - la branche que vous venez de créer dans votre environnement local , et la branche distante non existante où vous essayez de pousser , doit avoir le même nom .
créer la branche sur votre machine locale et basculer dans cette branche:
$ git checkout -b [name_of_your_new_branch]
Pousser la branche sur github :
$ git push origin [name_of_your_new_branch]
Lorsque vous voulez envoyer quelque chose dans votre branche, être sûr d'être dans votre branche.
vous pouvez voir toutes les branches créées en utilisant:
$ git branch
qui montrera:
* approval_messages
master
master_clean
Ajouter un nouvelle télécommande pour votre branche:
$ git remote add [name_of_your_remote]
Push changements de votre s'engager dans votre branche :
$ git push origin [name_of_your_remote]
mettre à jour votre branche lorsque la branche originale du dépôt officiel a été mise à jour :
$ git fetch [name_of_your_remote]
alors vous devez appliquer pour fusionner les changements, si votre branche est dérivée de développer vous devez faire:
$ git merge [name_of_your_remote]/develop
supprimer une branche de votre système de fichiers local:
$ git branch -d [name_of_your_new_branch]
pour forcer la suppression de la branche locale sur votre système de fichiers:
$ git branch -D [name_of_your_new_branch]
supprimer la branche sur github:
$ git push origin :[name_of_your_new_branch]
maintenant avec git, vous pouvez juste taper, quand vous êtes dans la branche correcte
git push --set-upstream origin <remote-branch-name
>
et git créent pour vous la branche origin.
la Création d'une antenne locale à partir d'une branche (peut être maître/ développer/ tout-autre-branche).
git checkout-b branch_name
Pousser à distance
git push-u remote_name local_branch_name: remote_branch_name
ici,
- - u: définit la branche amont
- remote_name: git définit le nom par défaut comme "origine" lorsqu'il crée le dépôt. Ceci peut cependant être changé en un nom arbitraire différent.
- local_branch_name: est le nom de la branche locale à pousser.
- remote_branch_name : est le nom de la branche distante que nous voulons créer à distance.
si nous supprimons les noms des branches locales et éloignées, il aura le format
git push-u remote_name branch_name
Cela va pousser la branche locale à distance et avec le même nom que la branche locale branch_name. La branche locale suivra également la branche distante.
je sais que cette question est bien répondue, mais je voulais juste énumérer les étapes que je prends pour créer une nouvelle branche" myNewBranch"et pousser à distance ("origine" dans mon cas) et mettre en place le suivi. Considérer que c'est "TL;DR" version :)
# create new branch and checkout that branch
git checkout -b myNewBranch
# now push branch to remote
git push origin myNewBranch
# set up the new branch to track remote branch from origin
git branch --set-upstream-to=origin/myNewBranch myNewBranch
je voulais juste ajouter que tandis que:
git checkout -b {branchName}
crée une nouvelle branche, il vérifie également que la branche / en fait votre branche actuelle. Si, pour une raison quelconque, tout ce que vous voulez faire est d'enlever une branche sans en faire votre branche actuelle, alors vous utiliserez la commande suivante:
git branch {branchName}
dans la première commande, "checkout" fait de ladite branche votre branche actuelle, et le "-b" signifie: cette branche n'existe pas encore, alors faites-le pour moi.
Comment le faire par le biais de l'Arborescence Source
1: Open SourceTree, click on Repository -> Checkout
2 :Click on Create New Branch
3: Select branch where from you want to get code for new branch
4: Give your branch name
5: Push the branch (by click on Push button)
Voici comment vous le faites dans eclipse par Egit.
1) Allez dans la vue "Git Repository Explorer" et exposez le projet git auquel vous voulez créer une branche. Sous Brances - > Local .. sélectionnez la branche pour laquelle vous souhaitez créer la branche ( Dans mon cas, j'ai choisi de maître .. vous pouvez sélectionner une autre direction si vous le souhaitez) .. puis cliquez avec le bouton droit de la souris et cliquez sur L'option Créer une branche .. et sélectionnez l'option checkout ce projet, puis cliquez sur le bouton Terminer.
2) Maintenant, à partir de l'explorateur de projets, sélectionnez le projet .. clic droit puis Team - > Push Branch.
une nouvelle branche distante sera créée. Vous pouvez donner le nom de la branche à vos collègues afin qu'ils puissent tirer.
git push -u <remote-name> <branch-name>
ne fonctionne pas si la branche nouvellement créée n'est pas générée à partir du même repo, c.-à-d. Si vous n'avez pas créé la nouvelle branche en utilisant git checkout -b new_branch
, alors cela ne fonctionnera pas.
Par exemple, j'avais cloné deux dépôts différents localement et j'ai dû copier repo2/branch1 à repo1/ et puis la pousser trop.
ce lien m'a aidé à pousser ma branche locale (clonée à partir d'une autre déclaration) vers ma déclaration à distance: