Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Version control - make new branch from specific commit

1160  1 2 3 4 5 6 все
alex445 коренной житель22.04.22 18:08
NEW 22.04.22 18:08 

Спрашиваю для системы контроля версий типа TFS или Azure DevOps, но также интересует вообще в принципе для любой системы.


Можно ли загрузить себе проект или начать новую ветку в состоянии определённого коммита? Похоже, что у Azure DevOps нельзя. Т.е. получается, что версия - это ветка, и можно загрузить лишь последнюю версию (т.е. последний коммит) ветки?


А если кто-то налажал и загадил ветку плохим коммитом? Всем придётся с ошибками грузить и исправлять самим?


Вообще, логичная задача вроде - загрузить с определённого коммита. А нельзя. Ну или не знаю как.

#1 
Murr патриот22.04.22 18:36
Murr
22.04.22 18:36 
в ответ alex445 22.04.22 18:08

Ну или не знаю как.

------

А документацию читать не пробовал?

Говорят там много интересного понаписано... смущ

#2 
alex445 коренной житель22.04.22 19:32
NEW 22.04.22 19:32 
в ответ Murr 22.04.22 18:36

Если всё везде читать, то с одной стороны проблем не будет, а с другой - времени не хватит. Я читал, искал, но видно не нашёл. Будет неплохо, если кто-то меня носом в нужное место ткнёт. ))

#3 
alex445 коренной житель22.04.22 19:46
NEW 22.04.22 19:46 
в ответ alex445 22.04.22 19:32

Насколько я понял, идея в Гите такая. Каждый загружает себе из репы-общака последнюю и типа отлаженную копию - которая без порожняков, подлян и лишнего базара. И после правок шхерит сначала у себя локально (локальный коммит), а потом шлёт маляву (пулл реквест) на слияние своей шняги (коммита) с общаком. Старшаки или смотрящие проверяют его маляву, и если она ровная и без подлян - дают добро на ввод его шняги в общак.


Так вот, некоторые кенты позволяют себе гнать порожняковые шняги в общак в обход маляв - сразу коммит в главную репу. Поэтому иногда паханы решают, что все такие потенциально порожняковые шняги должны быть сначала зашхерены в отдельных малых общаках (ветках). Пусть мол кент там гоняет любые порожняки, экспериментирует, а потом поглядим, сливать ли его малый общак в большой (мержить). Ну и раз мы защитились на уровне общаков (веток), то на уровне шняг (коммитов) создать новый общак нельзя. Или я неправильно понимаю?

#4 
Murr патриот23.04.22 00:44
Murr
NEW 23.04.22 00:44 
в ответ alex445 22.04.22 19:46

Или я неправильно понимаю?

-----

Угу... тебе кто мешает сделать бранч?


Бельмондо обшабился и восьмерит да ерша гонит...

#5 
alex445 коренной житель23.04.22 05:42
NEW 23.04.22 05:42 
в ответ Murr 23.04.22 00:44, Последний раз изменено 23.04.22 05:47 (alex445)

Бранч я и так сделал давно. Но делать бранчи на каждый чих неудобно. А удобно было бы с любого коммита чекаутнуться. Я же написал, что допустим ошибся и сделал плохой коммит с ошибками, и не могу вспомнить всех мест, где эти ошибки сделал, чтобы откатить код "вручную", просто поправив его в нужных местах. Т.е. я хочу откатиться на коммит назад - на версию без ошибок. По вашей логике, я должен на каждый коммит новый бранч начинать.


Я хочу, чтобы было как в приложухах ctrl+z, только для коммитов. Так понятно?


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


Если система контроля версий знает, какие изменения были на каждом коммите, то она может мне весь проект на состоянии любого коммита предоставить. Так какого она это не делает?


Я прошу какую-то очевидную элементарщину. Почему этого нет из коробки?

#6 
AlexNek патриот23.04.22 12:25
AlexNek
NEW 23.04.22 12:25 
в ответ alex445 23.04.22 05:42
Но делать бранчи на каждый чих неудобно

А в чем проблема то? Бранч на таску как раз самое то что надо

И что откатываться нужно по 10 раз на день у Вас?


Т.е. я хочу откатиться на коммит назад - на версию без ошибок

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

Вот тест сделал для наглядности.


Тест2 последний коммит, хочу вернутся на reformat


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

Вот делаем изменения

Но так ненадёжно

#7 
AlexNek патриот23.04.22 12:52
AlexNek
NEW 23.04.22 12:52 
в ответ alex445 22.04.22 18:08
Похоже, что у Azure DevOps нельзя

Как это?

https://azure.microsoft.com/en-us/services/devops

Видимо имеется в виду веб клиент для "Azure Repos". А кто заствляет именно им пользоваться?

#8 
Murr патриот23.04.22 15:07
Murr
NEW 23.04.22 15:07 
в ответ alex445 23.04.22 05:42

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

-----

Доки взаместо фени читать нужно...

#9 
alex445 коренной житель23.04.22 20:40
NEW 23.04.22 20:40 
в ответ Murr 23.04.22 15:07
Доки взаместо фени читать нужно...

Дед, вам семь знаков платят за знание, куда нужно ударить (по идее), а не за общие слова "читай мануалы". Я спросил, как скачать себе репу с конкретного коммита. Ок, пусть будет новая ветка, но с конкретного коммита. Куда ударить?


))

#10 
alex445 коренной житель23.04.22 20:46
NEW 23.04.22 20:46 
в ответ AlexNek 23.04.22 12:25, Последний раз изменено 23.04.22 20:50 (alex445)
Но делать бранчи на каждый чих неудобно
А в чем проблема то?

Ну в принципе да, логично - если ты начал что-то переписывать с конкретного коммита, то все коммиты выше же не будешь править из-за твоей правки (ну т.е. можно смерджить, но это, как я понимаю, отменяет все остальные коммиты в ветке, куда мерджишь свою? - т.е. теперь твоя ветка главная) - по-любому ты создаёшь свою ветку. Оно так и делается - каждое скачивание репы создаёт локальную ветку. Просто я привык всегда коммитить в мастер ветку и забыл про эти детали.


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

А, т.е. с конкретного коммита - это именно чекаут. А я думал, там clone, или pull или ещё какая-то команда.


Да, мануалы я ещё плохо знаю, но я и не претендую пока на семь знаков - даю пока свободно вздохнуть разным дедам. А читал бы мануалы, в спину бы им дышал, нервишки бы им портил. ))


Видимо имеется в виду веб клиент для "Azure Repos". А кто заствляет именно им пользоваться?

А мне показалось, там больше опций, чем в гит-клиент, встроенный в Студию?

#11 
AlexNek патриот23.04.22 21:20
AlexNek
NEW 23.04.22 21:20 
в ответ alex445 23.04.22 20:46
каждое скачивание репы создаёт локальную ветку

А что понимать под этим?


всегда коммитить в мастер ветку

Ужос. Никто не коммитит обычно в мастер ветку, только когда новая production версия.

Для этого есть или "своя" ветка или "девелор"

https://www.gitkraken.com/learn/git/best-practices/git-bra...


Да, мануалы я ещё плохо знаю

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


там больше опций, чем в гит-клиент, встроенный в Студию

не имею понятия, ни тем ни другим не пользуюсь.

#12 
Murr патриот23.04.22 22:13
Murr
NEW 23.04.22 22:13 
в ответ alex445 23.04.22 20:40

Куда ударить?

-----

В документацию, однако...

Сначала на предмет возможностей, затем на предмет параметров коими они достигаются и наконец вернутся сюда с вопросом почему в доках написано так, делаю так, а получается не то...

И не забудь про обновления винды...спок

#13 
Murr патриот23.04.22 22:17
Murr
NEW 23.04.22 22:17 
в ответ AlexNek 23.04.22 21:20

нужно просто "правильный" клиент пользовать

------

Думаю, что там максимум то, что идет со Студией... не помню есть ли там бранчи...

#14 
AlexNek патриот23.04.22 23:02
AlexNek
NEW 23.04.22 23:02 
в ответ Murr 23.04.22 22:17
не помню есть ли там бранчи.


#15 
alex445 коренной житель23.04.22 23:04
NEW 23.04.22 23:04 
в ответ AlexNek 23.04.22 21:20, Последний раз изменено 23.04.22 23:05 (alex445)
Ужос. Никто не коммитит обычно в мастер ветку, только когда новая production версия.
Для этого есть или "своя" ветка или "девелор"

Я так понимаю, что нужно при этом изолировать код, над которым ты работаешь? Ведь если смержить потом, то код из одной ветки должен затереться кодом другой. Т.е. все должны договориться, что этот кусок не трогают, потому что Вася там эскпериментирует и кодит, и потом, если всё пойдёт удачно, мы его ветку смержим с главной? Или кто-то должен раздать права на редактирование.


При коммитах в одну ветку всё просто - самый последний коммит затирает все предыдущие. Не в смысле удаляет, а в смысле его изменения главные.

#16 
Murr патриот24.04.22 01:24
Murr
NEW 24.04.22 01:24 
в ответ AlexNek 23.04.22 23:02

У меня только первые 4 пункта.

Возможно, что из-за того, что проект не под гитом.

#17 
Срыв покровов патриот24.04.22 09:05
NEW 24.04.22 09:05 
в ответ alex445 23.04.22 23:04
При коммитах в одну ветку всё просто - самый последний коммит затирает все предыдущие. Не в смысле удаляет, а в смысле его изменения главные.

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

#18 
MrSanders коренной житель24.04.22 11:11
NEW 24.04.22 11:11 
в ответ Срыв покровов 24.04.22 09:05, Последний раз изменено 24.04.22 11:20 (MrSanders)

Сдаётся мне, товарич ищет (и не может найти) команду

git revert

чтобы "убрать изменения последнего коммита с ошибками".


А вообще, понимания что такое репозитори, коммит, бранч в его фенеподобной чуши не наблюдается. Ну так и немецких программиздов старше 50, которые понимают что и как надо делать в гите, процентов 10. Люди привыкли к Dimensions,Synergy или тому подобному уродству из 90-х :) То же самое - "а зачем мне бранч а если я там поправлю то же что и другой, это же катастрофа!" (да здравствуют локи из Synergy!)

#19 
AlexNek патриот24.04.22 12:24
AlexNek
NEW 24.04.22 12:24 
в ответ Murr 24.04.22 01:24
что проект не под гитом

Было бы странно ожидать какую то правильную работу гит клиента в этом случае

#20 
1 2 3 4 5 6 все