Git: nazev aktualni vetve?

Jan Kasprzak kas na fi.muni.cz
Čtvrtek Duben 14 15:20:54 CEST 2011


Michael Mraka wrote:
: Jan Kasprzak wrote:
: % Michael Mraka wrote:
: % : Jan Kasprzak wrote:
: % : % 	A jeste jeden dotaz se skriptovanim nad Gitem: jak se po prepnuti
: % : % do jine vetve vratim zpet do te puvodni?
: % : %
: % : % 	Parsovat vystup "git branch" a hledat tam tu hvezdicku neni to prave,
: % : % protoze HEAD taky muze byt v "detached state".
: % : % 
: % : % 	Zatim nejschudnejsi co me napadlo je divat se na $GIT_DIR/HEAD,
: % : % a budto je tam SHA-1 od detached branch, pak se vratim prikazem
: % : % git checkout -f <to_sha_1>
: % : % nebo je tam "ref: refs/heads/<vetev>", pak se vratim prikazem
: % : % "git checkout -f <vetev>". Ale jednak je to slozitejsi nez by mozna mohlo
: % : % byt, a jednak nevim jestli v .git/HEAD nemuze byt jeste neco uplne
: % : % jineho nez SHA1 a nez "ref: refs/head/<vetev>".
: ...
: % : HEAD=$(git rev-parse --symbolic-full-name  HEAD)
: % : ...
: % : git co ${HEAD/*\\/}
: % 
: % 	Tohle ovsem pro deteached HEAD vrati jen retezec "HEAD", kteremu
: % se pochopitelne po prepnuti jinam uz nemuzu vratit.
: 
: Aha, a neni to, co chces, jenom
: HEAD=$(git rev-parse HEAD)
: ?!?
: Tj. zapamatovat si soucasny SHA1 a vratit se pak tam?

	Ne, protoze ja se chci vratit nejen ke spravnemu commitu,
ale do spravne _vetve_ (jednomu SHA1 muze odpovidat vice vetvi v refs/heads).
Nakonec jsem to udelal takto:

ORIG_BRANCH=$(git rev-parse --symbolic-full-name HEAD | sed 's/.*\///')
if [ "$ORIG_BRANCH" = HEAD ]
then
        # Jsme v "detached HEAD state"
        ORIG_BRANCH=$(git rev-parse HEAD)
fi

-Y.

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/    Journal: http://www.fi.muni.cz/~kas/blog/ |
Please don't top post and in particular don't attach entire digests to your
mail or we'll all soon be using bittorrent to read the list.     --Alan Cox


Další informace o konferenci Linux