Portál AbcLinuxu, 30. července 2025 19:37
git commit
, tak napíše error: Object 38...hash...a5 not a commit
a pak větev už nejde vyčekovat ani zobrazit historii. Při bližším ohledání se ukázalo, že 38...hash...a5
je onen tag vybraný pro merge.
Hledám marně odpověď na otázku, proč to vypadá, že plugin do Eclipse sice píše v dialogu Select branch or tag..., ale samotný GIT umí jen branch, ovšem tag nikoliv.
Řešení dotazu:
Problém:
Pokud se provádí sloučení (merge) určité větve do jiné větve, slučuje se vlastně jedna verze do druhé. Na hlavní větvi se jedná o verzi poslední (LATEST
v ClearCase nebo HEAD
v GITu). Do ní se sloučí vybraná verze druhé větve. V GITu se verze označují jako commit
. A sloučit lze do současné větve pouze jiný commit, nikoliv tag. Ovšem EGIT taguje vždy tzv. annotated tagy, což jsou plnohodnotné objekty asociované s určitým commitem. Při sloučení dojde k chybě, protože se do verze (commitu) slučuje cizorodý objekt (tag).
Nepoužívat annotaded tagy, ale tzv. lightweight tagy, které nejsou samostatnými objekty, jen zastupují vybraný commit. Pak se již správně do verze (commitu) sloučí jiná verze (commit) vybraný podle na něj odkazujícího tagu. A to je již bez problémů možné.
Příkazy označující HEAD-commit (současnou verzi) tagem:
Tag annotated: git tag -a aTagName -m 'Annotated tag'
Tag lightweight: git tag lwTagName
Příkazy označující commit (verzi) tagem:
Tag annotated: git tag -a aTagName 0f8...HASHCOMMITU...48a -m 'Annotated tag'
Tag lightweight: git tag lwTagName 0f8...HASHCOMMITU...48a
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.