easy_dev991
604 subscribers
23 photos
16 videos
3 files
162 links
Делюсь интересными находками/лайфхаками в процессе разработки под iOS, и возможно ты найдешь что-то полезное для себя!

GitHub: https://github.com/easydev991
Download Telegram
Некоторые вещи на отдельную статью не тянут, поэтому буду их публиковать не по графику.

#git #terminal #hint
Удаляем все локальные ветки
(кроме dev, develop, master, main)

1) Переходим в терминале в папку с проектом
2) Проверяем, чтобы в команде были указаны ветки, которые нельзя удалять (по аналогии с dev, develop, master и main)
3) Запускаем команду


cd myProject
git branch | grep -v "dev" | grep -v "develop" | grep -v "master" | grep -v "main" | xargs git branch -D
👍21
#terminal #simulator #hint

Очистить симуляторы

Иногда бывает нужно сделать очистку, чтобы избавиться от нерабочих симуляторов.
Такое может происходить при обновлении версии Xcode или Mac OS.
Если не очистить симуляторы, то могут вылезать непонятные ошибки типа "Не удалось запустить симулятор" без понятных причин, а при создании нового симулятора старый никуда не денется и будет занимать место.

Что делаем:

1. Закрываем симуляторы и Xcode (прямо через command + Q)
2. Выполняем команды в терминале:

xcrun simctl shutdown all && xcrun simctl erase all
xcrun simctl --set previews delete all
🔥2
#terminal #xcode #fix #simulator #hint

Запускаю симулятор в Xcode и вижу такую ошибку, хотя вчера все отлично работало 🤦‍♂️

Мне помогла команда в терминале:


sudo killall -9 com.apple.CoreSimulator.CoreSimulatorServicesudo killall -9 com.apple.CoreSimulator.CoreSimulatorService
5🔥2🤣2
#git #terminal #hint #gitignore

Бывает, в гит запушили файл, которого там не должно быть, а потом добавили его в .gitignore. Но файл уже находится в гите, и его нужно оттуда удалить.

Чтобы файл корректно удалился из гита с учетом новых правил игнора, достаточно выполнить эти две команды в терминале в папке с проектом:


git rm -rf --cached .
git add .


Пояснение:
- первая команда говорит гиту перестать отслеживать все файлы в проекте, но не удалять их с диска
- вторая команда снова добавляет все файлы и изменения в список для включения в следующий коммит, но теперь уже с учётом .gitignore (то есть файлы, которые вы исключили, не попадут в список)
- остается только сделать коммит/пуш с изменениями 👌

Для экспертов по гиту:
Знаю, что можно проделать операции только с нужным файлом, а не со всеми сразу, но мне удобнее так, и вдруг кому-то тоже 😉
5🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
#terminal #simulator #hint

По умолчанию нажатия на экране iOS-симулятора не отображаются, но это легко поправить командой в терминале:

defaults write com.apple.iphonesimulator ShowSingleTouches 1

После выполнения команды нужно перезагрузить симулятор и нажатия будут отображаться.

Важный нюанс: если включить запись экрана симулятора через кнопку Record Screen в самом симуляторе, то в получившейся записи не будут видны эти нажатия.

Нажатия будет видно только при записи экрана самого мака (видео можно обрезать, чтобы было похоже на запись через Record Screen)
🔥72🤔1
#terminal #git #hint

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

Чтобы удалить разом все такие ветки, нужно перейти в терминале в папку с проектом и выполнить команду:

git branch | grep -v "^\*" | while read branch; do
if ! git show-ref --verify --quiet refs/remotes/origin/$branch; then
git branch -D $branch
fi
done


Объяснение:
git branch выводит список всех локальных веток.
grep -v "^\*" исключает текущую активную ветку (чтобы не удалять её).
• Для каждой ветки проверяется, существует ли она на сервере (refs/remotes/origin/branch).
• Если ветка отсутствует на сервере, она удаляется принудительно (git branch -D), что удалит ветку даже если в ней есть несмерженные изменения.

Перед выполнением команды нужно убедиться, что вы переключились на ветку, которую не хотите удалять (например, main или master).
👌51
#terminal #bundler #rbenv #hint

Кто читал предыдущую статью про использование Makefile, и при этом впервые применил эти команды, скорее всего после перезапуска терминала столкнулся с ошибкой типа такой:

Could not find ‘bundler’ (2.6.5) required by your Gemfile.lock. (Gem::GemNotFoundException)


И после перезапуска терминала не работают команды bundle*, например: 

bundle exec fastlane


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

Вот что нужно сделать, чтобы эти настройки не сбрасывались.

1. Выполните в терминале по очереди эти две команды:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc


2. Затем примените изменения командой:

source ~/.zshrc


3. Всё! Теперь rbenv всегда будет работать автоматически, когда вы открываете терминал в папке проекта с файлом .ruby-version.

Это безопасно:
- rbenv специально разработан так, чтобы работать для каждого проекта отдельно, если в проекте есть файл .ruby-version
- Добавление строк в ~/.zshrc просто включает автоматическое переключение версий Ruby для каждого проекта, но не фиксирует какую-то одну версию Ruby глобально
- Все ваши проекты будут использовать именно ту версию Ruby, которая указана в их собственном .ruby-version.

Если захотите убрать эти настройки, просто откройте файл ~/.zshrc (например, командой nano ~/.zshrc или через Finder) и удалите строки:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init - zsh)"


После этого сохраните файл и выполните:

source ~/.zshrc


Всё вернётся как было 👌
👌21