Вариант ответа Мартина, который не обязательно будет применим к вашей ситуации, но я все равно хочу опубликовать его:)
Предположим, вы забыли создать ветку при коммите o
, поэтому у вас есть:
x--y--z--o--a--b--c--d--e--f master
|
+
[forgot to make a branch here]
И тогда вы поняли, что действительно хотели:
x--y--z--o master
|
+--a--b--c--d--e--f topic
В этом случае вы можете создать ветку на o
, используя ее хеш:
git branch topic # creates new branch 'topic' - will be at commit `f`
git checkout o -b newmaster # creates new branch called newmaster pointing on commit `o` (please replace `o` with the actual hash)
git branch -M newmaster master # force rename newmaster to master (means master points on hash `o`)
Вы будете в основной ветке (commit o
), поэтому в качестве последнего шага вы можете:
git checkout topic
Хеш, конечно, может быть только первыми 5 символами.
EDIT
Не имеет большого значения, что вы используете git-svn
, что действительно важно, так это то, что вы не опубликовали свою основную ветку в любой момент после o
Ветка в git - это всего лишь указатель на коммит. Вот почему ветвление так дешево: вы просто создаете указатель, и у вас есть ветвь.
Я не знаю, как отслеживать удаленные ветви, но вам может понадобиться настроить это после переименования / перемещения ваших ветвей.