LINUX.ORG.RU

git reset

 ,


0

1

подскажте, какой (стандартной/default) командой бросить дерево-git на последний комментарий? Пример:

$ git clone https://github.com/libretro/SameBoy
$ cd SameBoy/
$ git rev-parse --short HEAD
44d8b16

Но вот смотрите, нет желания повторно загружать дерево после компиляций, делаю:

$ rm -rf * && git reset --hard origin/master
HEAD сейчас на ef203cf Update version to 0.13.1
$ git rev-parse --short HEAD
ef203cf

и после/выше листинга сразу вопрос почему git: не становится 44d8b16?

  • Пробовалась такая схема: git fetch origin && rm -rf * && git reset --hard origin/master
  • все равно на то дерево которое после git clone https://github.com/libretro/SameBoy не сбрасывает
★★★★★

Я себе для сброса всяких компиляций и отката тестовых изменений завёл такой вот alias:

$ cat ~/.gitconfig | grep distclean
distclean = !git clean -fdx && git checkout -- .

5 лет работает без нареканий.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Эхх, надо же, спасибо мужики (слона я и не приметил)

А все таки, я вижу buildbot [default], как все таки на самый default откатиться, если допустим я не хочу знать какое название у ветки относящейся к default (в данном случаем ее имя buildbot)? rm -rf * && git checkout -- .?

distclean = !git clean -fdx && git checkout -- .

Не подскажите по синтаксису, что-то понять не могу, что !git clean -fdx делает?

NK ★★★★★ ()
Последнее исправление: NK (всего исправлений: 2)
Ответ на: комментарий от NK

Восклицательный знак обозначает внешнюю по отношению к Git команду в alias’е, поскольку она является составной (состоит из двух команд), git clean -fdx очищает всё содержимое репозитория Git, оставляя только те файлы, которые зафиксированы коммитами, git checkout -- . откатывает все изменения в зафиксированных файлах. Ветки тут не переключаются.

EXL ★★★★★ ()
Ответ на: комментарий от NK

вот так сейчас поступил
https://stackoverflow.com/questions/28666357/git-how-to-get-default-branch/54...

git fetch origin && rm -rf * && \
 git reset --hard origin/$(git symbolic-ref --short HEAD)

и наверно на этом остановлюсь

$ git rev-parse --short HEAD
55eaf9b
$ git symbolic-ref --short HEAD
buildbot

$ rm -rf * && git reset --hard origin/master
HEAD сейчас на f07b509 Merge pull request #45 from RokkumanX/master
$ git rev-parse --short HEAD
f07b509

$ git fetch origin && rm -rf * && git reset --hard origin/$(git symbolic-ref --short HEAD)
HEAD сейчас на 55eaf9b Update .gitlab-ci.yml
$ git rev-parse --short HEAD
55eaf9b
$ rm -rf * && git reset --hard origin/master
HEAD сейчас на f07b509 Merge pull request #45 from RokkumanX/master
$ git status
На ветке buildbot
Ваша ветка и «origin/buildbot» разделились
и теперь имеют 1 и 92 разных коммита в каждой соответственно.
  (используйте «git pull», чтобы слить внешнюю ветку в вашу)

нечего коммитить, нет изменений в рабочем каталоге

$ rm -rf * && git reset --hard 74acc93ef37
HEAD сейчас на 74acc93 Merge pull request #53 from vanfanel/main
$ git status
На ветке buildbot
Ваша ветка отстает от «origin/buildbot» на 8 коммитов и может быть перемотана вперед.
  (используйте «git pull», чтобы обновить вашу локальную ветку)

нечего коммитить, нет изменений в рабочем каталоге

$ git fetch origin && rm -rf * && git reset --hard origin/$(git symbolic-ref --short HEAD)
HEAD сейчас на 55eaf9b Update .gitlab-ci.yml
$ git status
На ветке buildbot
Ваша ветка обновлена в соответствии с «origin/buildbot».

нечего коммитить, нет изменений в рабочем каталоге
NK ★★★★★ ()