Git: la récupération dernier commit sur une branche
J'ai du mal à comprendre quelque chose sur GIT.
Nous avons un référentiel avec un certain nombre de branches en elle. J'ai la possibilité de récupérer une copie locale de l'une de ces branches (git checkout -b ...), apporter des modifications, puis de le repousser. Si je n'ai pas de balise de la fin de la branche, cependant, comment les autres utilisateurs à obtenir la tête de la branche? Lorsqu'ils utilisent git checkout pour récupérer la branche sur laquelle ils obtenir le code à l'endroit de la direction générale -- pas le chef de cette branche.
Ce qui me manque ici?
EDIT: je suis venu sur ce projet en retard et a été impliqué dans le CVS à GIT de conversion. Je suis en supposant que le FOO_3_4_0001... tags marquer des points le long de la branche a débuté avec FOO_3_4_0001_INITIAL. Comment puis-je vérifier?
EDIT 2: Merci à tous ceux qui ont contribué de réponses. Il s'avère que la balise FOO_3_4_0001 n'était pas sur la branche 3.4 et c'est ce que j'ai été absent tout au long. J'ai déjà arrangé le lynchage partie.
@ghoseb, n'a pas fonctionné. J'ai essayé ceci:
16:19:29 (1) foo $ git checkout --track -b FOO_3_4_0001_INITIAL origin/FOO_3_4_0001_INITIAL
Branch FOO_3_4_0001_INITIAL set up to track remote branch refs/remotes/origin/FOO_3_4_0001_INITIAL.
Switched to a new branch "FOO_3_4_0001_INITIAL"
16:19:36 (1) foo $ git branch
* FOO_3_4_0001_INITIAL
master
16:19:39 (1) foo $ git pull
remote: Counting objects: 68, done.
remote: Compressing objects: 100remote: % (59/59), done.
remote: Total 61 (delta 18), reused 0 (delta 0)
Unpacking objects: 100% (61/61), done.
From ssh://***
f0c5a5f..99f6c1e master -> origin/master
Already up-to-date.
16:19:42 (1) foo $
À ce point, j'ai vérifié pour la modification que j'ai faite sur cette branche, et il n'est pas là. Si j'ai vérifier le code tagged FOO_3_4_0001_RC5a mon changement est là.
Ok, plus d'infos pour @Dustin et @mipadi.
Quand je lance git branch -r
, je vois:
16:12:02 (1) foo $ git branch -r
origin/FOO_3_3_0001_BUILT_VF_BRANCH
origin/FOO_3_4_0001_INITIAL
origin/FOO_3_5_0000_RC5
origin/FOO_3_5_0001_BRANCH
origin/HEAD
origin/master
origin/origin
16:12:05 (1) foo $
Et si je regarde la liste des tags, je vois, entre autres choses:
16:12:05 (1) foo $ git tag -l
FOO_3_4_0000_RC1
FOO_3_4_0000_RC2
FOO_3_4_0000_RC2b
FOO_3_4_0000_RC3
FOO_3_4_0000_RC4
FOO_3_4_0000_RC4b
FOO_3_4_0000_RC5
FOO_3_4_0000_RELEASE
FOO_3_4_0000_TC1
FOO_3_4_0000_TC2
FOO_3_4_0001_RC2
FOO_3_4_0001_RC3
FOO_3_4_0001_RC4
FOO_3_4_0001_RC5
FOO_3_4_0001_RC5a
FOO_3_4_0001_TC1
16:14:33 (1) foo $
Le défi que j'ai, c'est de savoir ce que le code le plus récent sur le FOO_3_4_0001_INITIAL de la branche est.
Maintenant, dans ce cas, je sais que c'est FOO_3_4_0001_RC5a, mais si je n'ai pas (comme ce sera parfois le cas pour certains de nos développeurs) comment puis-je vérifier le origin_FOO_3_4_0001_INITIAL branche sais que j'ai la très de code plus tard, sur cette branche?
- Qu'entendez-vous par "tag"? Pouvez-vous donner un exemple de ce que vous essayez de faire et ce que vous attendez?
Vous devez vous connecter pour publier un commentaire.
Il sons comme vous êtes en train de faire la bonne chose. Le nom de la branche est simplement un pointeur vers le dernier commit sur la branche. Êtes-vous sûr que vous êtes à venir et poussant les modifications sur le repo que tout le monde est en tirant à partir? Lorsque vous vous engagez, vous êtes seulement en s'engageant à votre locale de pensions, de sorte à obtenir des changements, des collaborations doit, soit (a) tirez de votre pension sur titres, ou (b) tirez de quelques autres accessibles repo à qui vous avez poussé vos modifications à l'aide de
git push
.Il suffit de tirer sur le dépôt distant à obtenir la TÊTE de la branche distante.
J'ai pris le nom du dépôt distant comme origine ici, vous pouvez le remplacer par le nom réel.
Git clone, de traction et d'extraction sont de travail avec l'ensemble de l'arborescence du référentiel.
Les branches sont juste des balises à l'intérieur de votre dépôt local.
Quand vous avez fait un clone, vous disposez d'une copie du dépôt distant à l'origine.
Vous pouvez y accéder en vérifier localement.
Cela crée un local modifiable branche de l'origine de maître.
Mais vous pouvez également accéder aux branches à l'intérieur de ce référentiel.
Cela crée un local modifiable branche de l'origine de la branche dev.
Juste pour s'assurer que nous sommes de ne pas ignorer l'évidence:
Lorsque vous apportez des modifications, ne vous puis les valider avant de les repousser? Branches Git point à la dernière commettre sur la branche, donc si les changements n'ont pas été commis, puis la branche sera toujours le point de branchement, qui est ce que vous avez dit qui se passe.
Si vous parlez d'une branche locale au lieu de la branche distante, à la fois de ces travaux pour vous donner le dernier commit de hachage:
et
les essayer tous les deux, ils devraient être équivalentes