Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Расскажите за git [windows]

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Цитата:
https://happygitwithr.com/pull-tricky.html

Спасибо идея понятна.

Код:
git stash save
git pull
git stash pop

А на русском про это есть?
Непонятны некоторые нюансы. Например, если Git-у почудится в одном из файлов конфликт, то что произойдет? Из "копилки" ("stash") хоть что-то выйдет или обломает все изменения?
Есть способ вытащить измененные файлы убранные в "копилку" в отдельную папку?

Всего записей: 10926 | Зарегистр. 05-02-2003 | Отправлено: 11:44 10-11-2020 | Исправлено: V0lt, 11:45 10-11-2020
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt

Цитата:
А на русском про это есть?

https://pingvinus.ru/git/1718
https://www.atlassian.com/ru/git/tutorials/saving-changes/git-stash
https://code.tutsplus.com/ru/tutorials/quick-tip-leveraging-the-power-of-git-stash--cms-22988

Всего записей: 15917 | Зарегистр. 20-09-2014 | Отправлено: 22:30 10-11-2020 | Исправлено: Mavrikii, 22:31 10-11-2020
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как подсчитать количество ревизий для текущей ветки?
 
Сейчас для ветки "main" количество ревизий получаю так.

Код:
git rev-list --branches=[m]ain --count

 
Добавлено:

Код:
git rev-list --count HEAD

Считает для текущей ветви, но начинает считать с самого первого комита, а не с места появления ветки.

Всего записей: 10926 | Зарегистр. 05-02-2003 | Отправлено: 11:15 08-12-2020
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет!
Существуют ли какие нибудь более интелектуальные способы перевода в git из других систем контроля версий?
 
Если в лоб конвертировать SVN в git, то потеряются номера ревизий. Естественно перестанут работать ссылки, которые делают GUI-оболочки для SVN когда видят номер ревизии (пример, "r1234"). Потеря ссылок это просто неудобство, проблема в том, что теряются сами номера ревизий SVN.
 
Есть ли возможность добавить номера ревизий SVN в начало описания коммитов при переводе из SVN в git?
Пример:
Сейчас получается так - "Исправлены ошибки открытия файлов".
А нужно вот так - "[r456] Исправлены ошибки открытия файлов".

Всего записей: 10926 | Зарегистр. 05-02-2003 | Отправлено: 08:33 26-12-2020 | Исправлено: V0lt, 09:36 04-01-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt
https://blog.axosoft.com/migrating-git-svn/

Цитата:
Next, you’ll want to convert all of the SVN tags into the proper Git tags. You can run the following command to do so:


Цитата:
Next, you’ll want to create local branches for each of your remote refs. You can do so with the following command:

возможно, так как не возился с SVN

Всего записей: 15917 | Зарегистр. 20-09-2014 | Отправлено: 22:12 07-01-2021 | Исправлено: Mavrikii, 22:13 07-01-2021
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
По сути там тоже самое, что вот тут.
 
Но у меня пока нет проблемы преобразовать SVN tags в Git tags. И проблемы с ветками тоже нет. Мне нужно изменить описания ревизий SVN при преобразовании в комиты Git.
 
Пока есть идея поднять локальный сервер SVN, клонировать туда репозиторий. Каким-нибудь волшебным скриптом изменить описания ревизий. И уже после преобразовывать в Git.
 
Добавлено:
В общем с помощью svnsync, svnlook propget --revprop, svnadmin setrevprop, плясок с батниками и утилитой для преобразования кодировок удалось поменять описания ревизий в репозитории SVN. Первый шаг сделан.

Всего записей: 10926 | Зарегистр. 05-02-2003 | Отправлено: 08:18 08-01-2021 | Исправлено: V0lt, 21:56 08-01-2021
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как правильно обновить подмодуль до конкретного тега?
 
Сделал вот так

Код:
cd external\fmt
git describe --tags --always
git fetch
git checkout 8.0.1
git describe --tags --always
cd ..\..
git commit -m "Обновлен подмодуль fmt до версии 8.0.1"
git push

Всего записей: 10926 | Зарегистр. 05-02-2003 | Отправлено: 07:09 01-12-2021 | Исправлено: V0lt, 08:24 09-01-2022
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как преобразовать легковесный тег в аннотированный?
 
Добавлено:
Нашел решение - https://stackoverflow.com/a/25939259 (скрипт в ответе, который многострочный с комментариями).
Осторожно, скрипт переделает все теги, поэтому уберите последнюю строку с "git push", чтобы произвести изменения локально и проверить результат перед заливкой на сервер. Скрипт запускать в Git Bash.
 
Добавлено:
Скрипт для переделки конкретного легковесного тега в аннотированный.

Код:
#!/bin/sh
 
tag=0.5.6
COMMIT_HASH=$(git rev-list -1 $tag)
COMMIT_MESSAGE=$(git show $COMMIT_HASH --format=%s | head -1)
GIT_COMMITTER_DATE="$(git show $COMMIT_HASH --format=%aD | head -1)" git tag -a -f $tag -m"$COMMIT_MESSAGE" $COMMIT_HASH
 
# git push --tags --force

Всего записей: 10926 | Зарегистр. 05-02-2003 | Отправлено: 08:25 09-01-2022 | Исправлено: V0lt, 20:55 10-01-2022
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет.
 
Существует ли команда проверки наличия всех подмодулей для репозитория git?

Всего записей: 10926 | Зарегистр. 05-02-2003 | Отправлено: 08:11 15-08-2023 | Исправлено: V0lt, 12:39 15-08-2023
useretail



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору


Цитата:
git submodule foreach git init

не проверял

Всего записей: 4985 | Зарегистр. 14-09-2007 | Отправлено: 20:25 15-08-2023
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
useretail

Цитата:
git submodule foreach git init

Если подмодули не были загружены, то команда ничего не выдает.
Если был загружена часть подмодулей или все, то она переинициализирует только те, что загружены.
Не подходит.

Всего записей: 10926 | Зарегистр. 05-02-2003 | Отправлено: 21:03 15-08-2023
zzz528

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Наделал много комитов, а последний оказался не нужный, я хочу его удалить полностью навсегда, да именно удалить а не отменить, чтобы не засирать репозиторию который у меня уже 600мб сжатый.
Я долго штудировал и нашёл два способа: rebase и reset hard, да они якобы удаляют комит, но на самомо деле нет, он всё равно остаётся в базе и даже можно чекнуть по нему, и в log all он есть в наличчи тоже, меня это не устраивает. Ещё я пробовал команду gc - толку ноль, ненужный комит всё равно остёться в базе.

Всего записей: 2007 | Зарегистр. 20-06-2005 | Отправлено: 18:28 07-02-2025
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zzz528
все опции тут
https://stackoverflow.com/questions/1338728/how-do-i-delete-a-commit-from-a-branch

Цитата:
I too had what @Igbanam experienced, After a reset --hard on the commit I wanted, git log --oneline --all still showed the commits I wanted to discard. Turns out once I did a git stash pop those commits were removed from git log --all. I had a stash in one of the deleted commits

 

Всего записей: 15917 | Зарегистр. 20-09-2014 | Отправлено: 23:24 07-02-2025
zzz528

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Да, только скрытые каменты не смотрел, git stash pop выдало No stash found.
Правда из лога комит исчез, но чекнуть по нему можно, значить в базе остался.

Всего записей: 2007 | Зарегистр. 20-06-2005 | Отправлено: 14:56 08-02-2025
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zzz528
Так пробовали?

Код:
git gc --aggressive --prune=now

Взято по ссылке.

Всего записей: 10926 | Зарегистр. 05-02-2003 | Отправлено: 18:49 08-02-2025
zzz528

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
git gc --aggressive --prune=now

комит остался
 
Получается что невозможно удалить комит, как так, может залезть в базу и вручную убить, заново всё переделывать не хочется.
*****************
Вот такой изврат работает, лучше чем пересоздавать всё заново:
Создаём пустой репозиторий на жидохабе
Ставим ссылку на него remote add origin https://......
Делаем нужный reset hard
Потом отправляем на сайт push --set-upstream origin main
И вконец берём обратный уже почищенный clone

Всего записей: 2007 | Зарегистр. 20-06-2005 | Отправлено: 18:36 09-02-2025 | Исправлено: zzz528, 22:20 11-02-2025
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Расскажите за git [windows]


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru