Все валят с TFS и Azure Devops?
для каждой ветки своя папка локально заводится
нет. Один репозиторий -- одна папка. А новые ветки или обновы, да нужно скачивать, но опять таки не всё с нуля при обновлении.
Есть ещё удобная операция stash. Это когда все локальные изменения сохраняются в отдельном локальном хранилище и ветка переходит в состояние последнего коммита. После этого можно переключать ветки без опаски потери незакоммиченных изменений.
А как просмотреть версии файлов из других веток? Всё через сравнение (по датам, номерам чекинов, веткам) делается?
Мне иногда нужны некоторые файлы в последних версиях из основной ветки, но не вся обновлённая основная ветка, т.к. туда мои изменения ещё не закоммичены. Как обновить себе только часть файлов?
А как просмотреть версии файлов из других веток?
Особо так часто и не нужно было. Поэтому, как лучше всего или правильнее не знаю.
Обычно, если ломит делать лишние движения, то идём в репо веб интерфейс и смотрим прямо там.
Или можно сделать еще одну локальную копию и там переключать или сравнивать что хочется.
А как удалить файлы ветки с локальной машины правильно? Если я что-то делал с проектом, но не закоммитил и не запушил, то можно просто закрыть IDE и стереть папку с проектом с диска? Я ещё для верности делаю revert changes на весь проект, и тогда закрываю и удаляю. Этого достаточно?
Я к тому, что может там система контроля версий требуют какую-то команду для удаления, а не просто в файловой системе самому шуровать. Как ветки переключать ок - понял, а как удалить вообще...
А что за пулл реквест такой? Я работаю в своей ветке, а есть ещё куча других и главная (мастер) ветка. Но я коммичу лишь в свою. И на каждый коммит и затем пуш мне Гит предлагает сделать пулл реквест. Я прочитал, что это типа запрос добавить мой код репу. Но ведь я уже добавил его через пуш?
Но ведь я уже добавил его через пуш?
Вот именно для любителей делать прямой пуш в мастер и сделано.
Обычно, просто запрещают прямой пуш в мастер, только через ПР.
После создания ПР, как правило, проверяются начальные условия - типа всё компилится без ошибок и все тесты прошли успешно. Можно добавить ещё, что нибудь, по желанию
Затем кто то должен глянуть предлагаемые изменения, согласится с ними или добавить комментарии.
На следующем шаге можно закрыть ПР, после этого все изменения станут активными.
Дискутировать по этому поводу можно также до бесконечности, нужно оно или нет в конкретном проекте. Но многие решают что нужно.
Т.е. пулл реквест это пуш в мастер
ну не совсем так, вот тут есть пример
https://blog.skillfactory.ru/glossary/github/
А если в мою локальную ветку
В локальной ветке можно делать что хошь - главное состояние перед слиянием.
может набраться слишком много изменений
Нужно тогда разбивать на подзадачи.
Или пулл реквест в любую ветку можно сделать,
конечно. Но это не операция - это процесс. Процесс слияния веток. В каждом конкретном случае он разный, хотя есть и стандартные шаги.
Для одного единственного разработчика он не нужен вообще.
А если в мою локальную веткуВ локальной ветке можно делать что хошь - главное состояние перед слиянием.
У меня иногда подобная ситуация происходит, что здесь на картинке слева, только всё в пределах моей ветки. Я не помню, что нажал - вроде сначала коммит и пуш, затем пулл, и затем снова пуш. И там прямо от моей ветки появилась параллельная с одним пунктом, и затем тут же слилась с моей основной. Я так понимаю, где-то рассинхрон произошёл удалённой репы с моей веткой и моей локальной репой с моей веткой, а после принудительного пуша они слились.
вроде сначала коммит и пуш, затем пулл, и затем снова пуш
Правильно не помнишь. От такой последовательности действий никаких мержей не будет.
"внезапные" ответвления от локальной ветки появляются когда у тебя есть различия между локальной веткой и ремоут (удалённая звучит как будто её кто-то удалил), с которой ты свою локальную ветку синхронизируешь. Если эти изменения нельзя разрешить простым fast-forward мержем.
Примеры.
Локальная Ремоут git push git pull A-B-C A-B добавит C в ремоут ничего не сделает A-B A-B-C ничего не сделает добавит C в локальную A-B-C A-B-D пошлёт делать пулл замержит D с C, содаст E в локальной C / \ A-B--D--E - так будет выглядеть локальная ветка после git pull
Многим не нравится видеть такую ветвистую историю. На помощь спешит параметр --rebase (git pull --rebase) ну или настройки. Можно настроить что все pull по умолчанию делаются с --rebase, можно для конкретной ветки. В третьем примере после git pull --rebase у нас в локальной ветке появится такое:
A-B-D-C' где C' это изменённый C. Ну, про rebase ты же в курсе, да?
вроде сначала коммит и пуш, затем пулл, и затем снова пушПравильно не помнишь. От такой последовательности действий никаких мержей не будет.
Вроде, сейчас точнее вспомнил - я пытался поправить коммент в уже запушенном коммите. Или ещё не запушенном, но уже закоммиченном - вот тут точно не помню. Вобщем, образовалась бранча, которая тут же смёрджилась после запушивания коммита с исправленным комментом. Вроде как-то так.
Т.е. пулл реквест это пуш в мастер? А если в мою локальную ветку, то можно копить пуши без пулл реквеста? Правда, может набраться слишком много изменений...
Или пулл реквест в любую ветку можно сделать, не обязательно в мастер?
Вобщем, попробовал согласиться на предлагаемый пулл реквест - из Студии открылся веб интерфейс Гита на Azure DevOps, где по-умолчанию предложили смёрджить мою ветку с мастером. При этом в выпадающих списках можно выбирать, какую ветку с какой мёрджить.
Короче, как я понял, пулл реквест это всегда мёрдж двух веток.