Git
Chapters ▾ 2nd Edition

3.3 Клонове в Git - Управление на клонове

Управление на клонове

След като създадохме, сляхме и изтрихме няколко разклонения код, нека разгледаме някои инструменти, които ще бъдат от полза, когато започнете да ползвате разклоненията постоянно.

Командата git branch може да прави повече от създаване или изтриване на клонове. Ако я пуснете без аргументи, ще получите прост списък на наличните клонове код:

$ git branch
  iss53
* master
  testing

Звездичката преди името на клона означава, че той е текущо активния в момента (клонът към който сочи HEAD указателя). Това означава, че ако къмитнете в този момент, master клонът ще се придвижи напред отразявайки резултатите от вашата работа. За да видите последния къмит за всеки клон, изпълнете git branch -v:

$ git branch -v
  iss53   93b412c fix javascript issue
* master  7a98805 Merge branch 'iss53'
  testing 782fd34 add scott to the author list in the readmes

Полезните опции --merged и --no-merged могат да филтрират списъка до клоновете, които сте слели или все още не сте слели с текущия клон. За да видите кои клонове сте слели, изпълнете git branch --merged:

$ git branch --merged
  iss53
* master

Понеже вече сляхте iss53 по-рано, можете да го видите в списъка. Клоновете в този списък, които нямат звездичка пред името си могат безопасно да бъдат изтрити с git branch -d, защото вече сте интегрирали промените им в текущия клон и няма опасност да загубите нищо.

Обратно, ако искате да видите клоновете, които все още не сте слели с текущия, изпълнете git branch --no-merged:

$ git branch --no-merged
  testing

Това показва другия ви клон. Понеже той съдържа работа, която все още не е слята, не можете да го изтриете с git branch -d:

$ git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.

Ако все пак искате да изтриете клона заедно с промените по него, можете да форсирате изтриването с параметъра D, както подсказва съобщението.

Tip

Ако не сте посочили даден къмит или име на клон като аргументи, то опциите --merged и --no-merged ще ви покажат съответно какво е и какво не е слято в текущия клон.

Можете винаги да подадете допълнителен параметър за да попитате за merge статуса по отношение на друг клон без първо да превключате към него, например - какво не е слято в master клона.

$ git checkout testing
$ git branch --no-merged master
  topicA
  featureB