J'ai déjà une branche principale locale qui suit la branche principale distante d'un projet github. Maintenant, un de mes collaborateurs a créé une nouvelle branche dans le même projet, et je veux faire ce qui suit en conséquence:
- créer une nouvelle branche localement
- faire en sorte que cette nouvelle branche suive la branche distante nouvellement créée.
Comment dois-je le faire correctement?
git
github
git-branch
MLister
la source
la source
git checkout -t <remote>/<whatever>
. S'il n'y a qu'une seule branche de suivi à distance qui se termine par,<whatever>
vous pouvez même le fairegit checkout <whatever>
et git devine ce que vous voulez dire.Réponses:
La première commande garantit que vous avez une branche distante dans le référentiel local. La deuxième commande crée une branche locale qui suit la branche distante. Il suppose que votre nom distant est
origin
et le nom de la branche estbranch-name
.--track
L'option est activée par défaut pour les succursales distantes et vous pouvez l'omettre.la source
git checkout <branchname>
et git la vérifiera automatiquement et configurera une branche de suivi. Je voulais juste répéter ce que @Mark Longair a dit ci-dessus dans ce commentaire: stackoverflow.com/questions/11262703/… .remotes/origin/develop
? Ne devrait-il pas être justeorigin/develop
? Sont-ce les mêmes?git fetch --all
, sinon les nouvelles branches ne seraient pas récupéréescmd
, eclipse détecte la nouvelle branche?Si vous n'avez pas de succursale locale existante, c'est vraiment aussi simple que:
Par exemple, si vous récupérez et qu'une nouvelle branche de suivi à distance est appelée
origin/feature/Main_Page
, procédez comme suit :Cela crée une branche locale avec le même nom que la branche distante, en suivant cette branche distante. Si vous avez plusieurs télécommandes avec le même nom de branche, vous pouvez utiliser la moins ambiguë:
Si vous avez déjà créé la branche locale et que vous ne souhaitez pas la supprimer, consultez Comment faire en sorte qu'une branche Git existante suive une branche distante? .
la source
git checkout 1.5-branch
(remotes/upstream/1.5-branch
est dans la sortie degit branch -a
) entraîne laerror: pathspec '1.5-branch' did not match any file(s) known to git.
modification de ceci pourgit checkout upstream/1.5-branch
entraîner le détachement de HEAD et aucune branche locale n'est créée. Je pense que cette partie de la réponse est tout simplement erronée. C'est avec git 2.4.3<remote>/<branch>
. Une branche de suivi à distance est en lecture seule, indiquant où cette branche était sur la télécommande lors de la dernière extraction. Faire appelcheckout
à cette référence de branche vous met en mode HEAD détaché, comme le dit Piotr. Notez que spécifier la branche distante à récupérer évite de créer des branches de suivi distantes indésirables.git checkout feature-branch
. Je ne suggère PAS d'utiliser la commandegit checkout origin/feature-branch
qui, comme vous l'avez tous les deux souligné, entraînera une tête détachée inutile.Tout d'abord, vous devez récupérer le référentiel distant:
Ensuite, vous pouvez créer la nouvelle branche et la configurer pour suivre la branche distante souhaitée:
Vous pouvez également utiliser "git branch --track" au lieu de "git checkout -b" comme max spécifié.
la source
checkout -b
utilisez une branche distante comme point de départ, il est alors inutile de l'utiliser--track
.git checkout <branchname>
, et qu'il y a une branche distante avec le même nom (après avoir fait agit fetch
), alors la branche locale sera automatiquement configurée pour suivre la branche distante.Lorsque la branche n'est pas une branche distante, vous pouvez pousser votre branche locale directement vers la branche distante.
ou lorsque vous avez une branche de développement
ou lorsque la branche distante existe
Il existe d'autres possibilités pour pousser une branche distante.
la source