Вопросы по Гит, после SVN
Use the--depth
option ingit clone
Ну, давайте я поясню. Если выстрелить себе в ногу, не надо удивляться что ходить неудобно :)
depth "обрезает" историю. При depth 1 копируется текущее состояние master-а и всё. Никакой информации (вот тут не уверен на 100%, может информация "был коммит с комментарием" и будет, но не будет данных о состоянии проекта в этом коммите) о предыдущих коммитах. Работать с таким - вредительство. Используется в основном для автоматических сборок. Им история не нужна.
Ну и вариант, когда коллега залил баальшую ветку которая мне нафиг не нужна. Почему у меня стоит значёк , что информация доступна только на сервере?
А тут ответ сложнее.
1. Когда мы делаем git clone (без ограничения глубины!) мы копируем всё. (за исключением некоторых настроек, см. --mirror) Но. Локальные ветки не создаются.
Например. На сервере есть master и development после git clone делаем git branch и видим... Только *master. Но стоит сделать git branch -r как мы увидим и origin/master и origin/development.
Если хочется работать с другой веткой просто делаем git checkout development. Это создасть локальную ветку development, которая будет ссылаться на origin/development. Никакие данные при выполнении этой команды с сервера не копируются. Они уже у нас.
Если вы сделали git clone и после этого "стоит значёк , что информация доступна только на
сервере" выбросьте нафиг этот гуй. Он тупой.
2. Склонировали репо и работали с ним какое-то время. Коллега заливает на центральную репо свою ветку. Локально у нас про нее нет никакой информации. Мы даже не знаем что она существует. Можно или сделать git fetch (забрать всю новую инфу с сервера, со всеми коммитами, новыми файлами и те пе, может длиться) или можем посмотреть а что там есть на сервере с помощью git ls-remote
Если в этом случае ваш гуй показывает "значёк , что информация доступна только на
сервере", то он всё делает правильно. Посмотрел на удаленке и показал, но сам пока что ничего не скачивал.
Создает новый коммит, который выполняет такие же изсенения как и "копируемый".
где именно? В какой ветке?
В текущей.
СВН-вская копия получилась без веток в коммитах, просто идет одна длинная кишка, хотя по файлам видно что изменения исключительно в ветке, да и ветка моя, так именно и делал.
Тут или хреново сконвертировали (git-svn хорошо понимает свн-овские ветки) или есть недопонимание. Если параллельной разработки никогда не было (сделали ветку, поработали в ветке, потом замержили ветку назад в транк, при этом в самом транке никаких новых коммитов не было) то гитовский лог будет выглядеть как линия.
Может так понятнее... Если в svn было
trunk: A - B - - - F \ / branch: C - D - E
То в графе коммитов в гите вы увидите A- B - C - D - E - F
Но ветка "branch" будет на месте. Ее HEAD будет показывать на E (а master на F). Хотя не уверен, будет ли F присутствовать. Он в принципе не нужен...
А что говорит git branch -a?