Pull to refresh

Comments 28

Да, reset`ом частенько пользуюсь, полезно.


Наверное каждый кто только начинал работать с git следовали другими командами:


  • скопировать папку с репозиторием куда-нибудь
  • удалить исходную папку
  • git clone ...
  • вернуть изменения с помощью copy-paste

Она помогает избавиться от глупых опечаток, которые иногда закрадываются в коммиты.

От глупых опечаток в коммите помогает избавиться команда "git commit --amend". А такой ресет часто полезен когда надо слить 2 или более коммитов на одной ветке в один.

А вместо экзотической "git reset --hard HEAD~1" проще использовать обычный checkout, если конечно workspace чистый... Гораздо чаще используется команда "git reset --hard HEAD" чтобы как-раз этот workspace почистить от изменений. Ну "git clean" с флажками по вкусу тоже иногда бывает нужен.

Про аменд соглашусь, но вот слить несколько коммитов в один лучше через "git rebase -i ...", а не через reset --soft. Тем более это совсем не обязательно нескольо последних коммитов.

Про то, что проще использовать обычный checkout не соглашусь. Проще запомнить, что "git reset --hard COMMIT" гарантированно приводит рабочее пространство к определенному состоянию, а запоминать разные способы уже как бы лишнее. Тем более вы не противник ресета, а просто ограничиваете область его применения.

Часто пользуюсь `rebase -i`. Он не только слить коммиты может, но и отредактировать комментарий, изменить порядок коммитов, удалить определенный коммит, squash и многое другое.

Еще одна команда, которая недооценена - `cherry-pick`.

checkout на коммит сделает "detached head", а ветку не тронет.

Что делать, если удалённая ветка оказывается удалённой?

Это была шутка про великий и могучий русский язык, серьёзно отвечать не надо.

стешить стоит и с новыми файлами

git stash --include-untracked

которые не удаляет git reset --hard

но можно удалить их

git clean -df

предварительно проверив, ничего ли лишнего не удаляем с помощью

git clean -dfn

Вроде как последняя удаляет всё, что не относится к репозиторию. Потому будьте осторожны. У нас сторонние библиотеки, которые собираются с бубном, лежат как директория в проекте (помечена как игнорируемая). И вот такая команда почистила и их. Собирал неделю потом. Приходится, когда нет никого с такой же архитектурой процессора.

Вообще-то нет. Чтобы почистились игнорируемые файлы надо еще добавить ключ -x.

Полезная команда для обновления git clone --mirror репозиториев. Там git pull не работает.

git remote update
UFO just landed and posted this here

Кажется, хаб PHP стоит поменять на хаб Git

Для новичков может быть полезной git push --dry-run — она позволяет эмулировать push не производя никаких действий, помогает получить уверенность в своих действиях и/или проверить все ли правильно настроено и сделано перед собственно push'ем. Если все прошло гладко, можно убрать --dry-run.

3-5 доставили.

3 – "как я в первый раз сломал git репозиторий" (hg не ломался вообще, а тут в первую же неделю). Не надо этому учить новичков. Пусть вначале разберутся с reflog... А тогда они уже сами будут знать про reset --hard.

Вообще git reset – это как во времена DOS файлы Disk Editor-ом восстанавливать... Можно восстановить, а можно всё сломать. А может оказаться, что уже и не восстановить (gc прошёл).

UFO just landed and posted this here

Как вообще всё это можно выучить, если постоянно этим не пользуешься?((

Не нужно учить. Нужно прочитать документацию/книгу что бы иметь общее представление о возможностях. Что бы знать что гуглить.

А вот когда они понадобятся, вот тогда уже разбираться.

Покажите мне хотя бы один gui, который может например смержить 3 ветки через octopus?

Я думаю вы даже не слышали о таком. Да и не услышите, пока продолжаете пользоваться gui.

Если вы запускаете octopus вручную на машине разработчика — у вас очень насыщенная и интересная жизнь. С такой жизнью не до GUI, конечно.

Вот видите, вы даже не поняли о чем речь. Я не про сервис для деплоя. Я про мерж-стратегию говорю, коих в гите штук 20 есть.
Собрать монорепозиторий с сохранением истории? Пожалуйста - subtree.
Удалить секреты при публикации проекта? Пожалуйста - filter-branch.
И куча всего, о чем в GUI нет даже упоминания.
Мне приходилось за 10 лет 2 раза использовать subtree merge. Но я бы и не подумал что это вообще возможно, если б не вычитал в книге. Я бы просто грохнул всю историю, копипастнув код.

На картинке octopus merge. У коммита 4 родителя.

Вот видите, вы даже не поняли о чем речь.

Пардон, не владею телепатией.


Я про мерж-стратегию говорю, коих в гите штук 20 есть.

Всё еще не подразумевает необходимость сливания многих веток на машине разработчика. Для этого есть пулл реквесты и CI.
Ну и не говоря уж о том, что Git Extensions это прекрасно делает. Из GUI.


Собрать монорепозиторий с сохранением истории? Пожалуйста — subtree.

Это определенно то, что надо знать, ага.
За 12 лет работы с гитом это мне пригодилось ровно 0 раз, хотя прочитал об этом я в рамках начального погружения в git.


Удалить секреты при публикации проекта? Пожалуйста — filter-branch.

Секреты сразу не надо хранить, это во-первых. А во-вторых — я считаю filter-branch откровенно небезопасной вещью, и совершенно правильно, что её нет в нормальных GUI.


И куча всего, о чем в GUI нет даже упоминания.

С примерами у вас, правда, не очень задалось. Но я конечно вам и так поверю — куча так куча.

Покажите мне хотя бы один gui, который может например смержить 3 ветки через octopus?
Почему бы просто не заменить такую экзотику на два последовательных слияния?

Это было выбрано лишь для наглядности.

Ключ -p для всех команд, которые его поддерживают.

p.s. Надо бы сваять бота, который бы оставлял подобные комментарии в то и дело появляющихся постах про команды git.

Опять каждый программист кому-то что-то задолжал. Какие долги навесили за последние пару недель? Каждый программист должен использовать <вот эти команды> bash, знать <вот эти команды> vim, <вот эти команды> git… Вот прям должен! Какая-то, товарищи авторы постов, у вас творческая импотенция. Очень это напоминает кликбейтные статьи на говноресурсах аля «Десять способов борьбы с похмельем» или «Как похудеть на 12 килограмм всего за четыре дня». Нижеплинтусный шлак, одним словом
Sign up to leave a comment.