Ответы пользователя по тегу Git
  • Как работать с подмодулями локально?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    Подмодули можно (и нужно?) добавлять по относительным путям типа ../video-player — будут работать и локально, и на GitHub, если main-project и video-player лежат на одном уровне.
    Ответ написан
    1 комментарий
  • Почему в git добавляются папки, которые содержатся в gitignore?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    .gitignore действует сразу, но в нем надо косую черту переставить:
    .vs/
    Debug/
    Release/
    *.vcxproj.filters
    *.vcxproj.user
    Ответ написан
    Комментировать
  • Как собрать коммиты из 2-х разных локальных репозиториев в последовательную историю?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    Обычный cherry-pick, не? Слияние (merge) сливает ветку изменений целиком, а тут речь именно про ручной отбор, то есть собирание истории вручную?
    git switch master
    
    git cherry-pick second~1
    # разрешаем конфликты, если надо
    git cherry-pick --continue # если были конфликты
    
    git cherry-pick second
    # аналогично с конфликтами и продолжением

    Аналогичного результата можно было бы добиться и при помощи перебазирования second на master, но оно приведет к нужному результату только если нет этих самых unrelated histories, ибо при их наличии начнет перетаскивать историю от сотворения мира. Для двух коммитов ручной перенос — самый простой и употребительный вариант, поменяется только дата коммита.
    Ответ написан
  • Как правильно удалить эти коммиты?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    На самом деле решение зависит от принятого порядка работы (workflow). Если допустимы rebase (у программистов) и force push, можно перейти в ветку, сделать сброс, а потом принудительно обновить ветку в удаленном хранилище (программистам потом придется выполнить сброс и/или перебазирование у себя):
    git stash push
    git reset --hard HEAD~10 # задать свое число — на сколько откатиться, либо по хешу
    git push --force-with-lease
    git stash pop

    Если же, как написано:
    Локально я себе все это не пуллил.

    Будет достаточно одной команды:
    git push --force-with-lease

    Эти действия именно удалят коммиты без возможности восстановления.
    Ответ написан
    2 комментария
  • Как правильно слить воедино нескольких репозиториев в Git?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    При помощи git-filter-repo можно растащить единую историю на историю подмодулей, будто с самого начала на подмодулях было. Придется повозиться, конечно, но оно стоит того, как по мне.
    Ответ написан
    Комментировать
  • Как избавиться от искажения файлов после скачивания с Git LFS?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    После скачивания с git hub (Code -> Download ZIP и через расширение gitzip) и дальнейшей разархивации я сталкиваюсь с проблемой, что все файлы загруженные через git lfs имеют размер 1КБ

    Это может означать, что процедура формирования zip-архива на стороне GitHub не поддерживает Git LFS.

    мне хватает 1 gb, по разрешениям и тарифам всё нормально.

    Вот, видимо, не хватает, если полная поддержка Git LFS только за оплату. Но могу ошибаться, возможности тарифов не смотрел.
    Ответ написан
  • Как можно сделать перенаправление с HTTPS на SSH в Git?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    Если SSH нужен именно для push, в Git поддерживается отдельный pushurl (качать по одному пути, толкать по другому):
    git remote set-url --add --push origin git@github.com:Username/repository
    Ответ написан
    Комментировать
  • Учитывает ли Git регистр имени файла и как его поменять?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    По сути вопроса:
    git config --show-origin core.ignoreCase
    Покажет, где установлено. Я во всех репах после инициализации или клонирования даю:
    git config --unset core.ignoreCase
    По умолчанию Git различает регистр, но шаблон конфига для Windows выставляет core.ignoreCase = true.

    А вот старые коммиты останутся как есть. Если вам важен регистр, нужно взять git-filter-repo и перебить репу. Примерно так:
    git filter-repo --force --prune-empty always --prune-degenerate always --path-rename hello.cs:Hello.cs

    Вместо одиночного или нескольких --path-rename можно написать целую простыню переименований в отдельном файле. Поддерживаются регулярки. Читайте доку, короче.

    Оно перебьет хеши измененных коммитов, то есть репу придется загружать на сервер/GitHub заново, но тут уже ничего не попишешь: или один раз исправить, или продолжать мучиться.
    Ответ написан
    1 комментарий
  • Как увидеть все изменения, которые я делал в ветке git?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    Чтобы переключаться по очереди на каждую из них и видеть, что где я делал и далее копировать сделанный кусок кода и вставлять его в новую ветку.

    Чтобы делать cherrypick.

    Есть очень удобный GitKraken, но для приватных хранилищ от платный.
    Ответ написан
    Комментировать
  • Чем SVN лучше Git?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    SVN лучше Git тем, что не пытается превратить твою Винду в Юникс и не тащит за собой кучу мусо... э-э-э, зависимостей, которые проистекают от нежелания разработчиков Git договориться и написать всё на одном языке... или не на одном, но компилируемых, чтобы потом собрать объектный код в исполнимые модули.

    Поэтому SVN -- это 5 метров EXE/DLL самого SVN, а Git -- 200 (400?) метров, включающих в себя MSYS, Cygwin и Perl помимо самого Git. Для кого размер не аргумент -- есть понятие сложности владения: в большой и сложной системе больше точек, где что-то может сломаться.

    Насчет поколений и распределенности никто не спорит. Просто так сложилось, что к моменту появления распределенных VCS несистемные программисты перестали писать на компилируемых языках... В смысле однородности Mercurial лучше, но Python медленный, зараза!
    Ответ написан
  • Как организовать хранение библиотек и хидеров от которых зависит наш проект?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    И чтобы хранилась история, чтобы мы могли взять версию своей библиотеки за прошлый год и быстро ее собрать со всеми зависимостями. Сейчас используем сетевую папку просто.

    В SVN есть такая штука, как svn:externals. В Git и Мercurial тоже наверняка есть, а вот в CVS вряд ли.

    Суть в том, что в вашем хранилище хранится ссылка на другое (внешнее) хранилище, и при развертывании рабочей копии клиент ходит по этим "символическим ссылкам" и рекурсивно по ним всё скачивает. В SVN подчиненные рабочие копии будут выглядеть как обычные, у них будет своя папка .svn.

    Нужно только, чтобы внешнее хранилище было такого же типа, как и ваше. Скажем, SVN не сможет скачать из внешнего Git. Если вы качаете библиотеки не из хранилищ, а просто архив с сайта, заведите у себя отдельное хранилище для библиотек и складывайте туда все нужные версии.
    Ответ написан
    Комментировать
  • Как вести разработку сильно разнящихся проектов в git?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    Это не проблема Git, это проблема архитектуры вашего приложения. При нормальной реализации должно быть общее ядро и клиентозависимые расширения, а для поставки клиента собираться в единое целое тем или иным образом.

    То, как вы сейчас делаете, похоже на реализацию двух разных приложений. Если хотите продолжать -- разделите хранилища, как вам уже предложили.
    Ответ написан
    1 комментарий
  • Оправдан ли в 2015 переход с git на svn?

    Vapaamies
    @Vapaamies
    Психанул и снес свои ответы козлам, не отмечающим…
    Как активный пользователь SVN не вижу аргументов начинать новый проект на SVN в 2015-м году, если только нет идеологических причин. Тем более, раз у вас Git уже освоен и всем устраивает.
    Ответ написан
    Комментировать