LINUX.ORG.RU

еще про git


0

0

1. Сделал:
git bundle create last_update HEAD

Далее хочу обновится:

git pull last_commit

Выдает:

You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me either. Please
specify which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

Что еще указать ?

2. Есть коммиты D C B A. Как удалить, например, только B ?


1. Просто укажите в конце команды название ветки, в которую вы делаете pull. Например `git pull last_commit master`.

2. Зависит от того что вы имеете в виду под удалить. Варианты есть такие:
a) Если изменения уже были отправлены куда-то, то лучше всего сделать просто `git revert B`. В этом случае в историю будет добавлен новый коммит обратный B.
б) Если изменения сделаны недавно и очень хочется полностью избавиться от B, то можно делать `git reset`, но он перемещает HEAD, соответственно A либо потеряется, либо придётся вручную избавляться от B, либо ещё как-то извращаться. Например, можно извратиться так:

git revert B
git reset C
git commit -am 'comment A'

в) Есть ещё `git replace`, но ни разу им не пользовался. Почитать описание с примерами можно на progit.

GArik ★★★
()

>2. Есть коммиты D C B A. Как удалить, например, только B ?

Используя git rebase -i. Т.е., если самый старый коммит - это A, и HEAD = D, то git rebase -i A покажет окошком со списком коммитов, из которого можно просто удалить лишний коммит, и rebase его выкинет.

Если при rebase сделаешь ошибку, то с помощью git reflog можно будет все вернуть на место (git не удаляет историю навсегда; она будет удалена только через месяц при сборке мусора, или при явном вызове git reflog expire).

dmitry_vk ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.