Цитата:
Сообщение от Кот ДаWINчи
Я обычно скачиваю ветку master // git clone - и мы выкачиваем удалённую ветку по умолчанию
затем чтобы перейти на другую (например 330)
делаю так:
git branch 330 // нормальная команда - создаёт локальную ветку, по умолчанию - копия того, что выкачано командой git clone в самом начале
git Checkout 330 // Ага - первой командой ветку создали, а этой - в неё перешли/переключились
и всё в репозитории уже версия под 330 // из всего вышесказанного следует, что данная строка - бред
чтобы вернуться к master // Четыре строки просто без комментариев...
делаю так:
git branch master
git Checkout master
при этом скачивается с инета очень мало. (посравнению со всем репозиторием) // Ну естественно!!! "Очень мало" и "посравнению" как нельзя более точно подходит, если учесть, что таким образом git в интрнет вообще не обращается
|
Извините за грубость, но это бред сивой кобылы (чтим комменты). Не вводите, пожалуйста, людей в заблуждение.
Без обид, просто я постоянно работаю с этими командами и отлично знаю что и как они делают. Прежде чем перечить мне - просто отключи интернет и попробуй проделать эти же операции и ты узришь чудо: всё получится, т.к. при использовании данных команд никакого обращения к интернету гит не производит...
А меркуриал и правда в разы удобнее, понятнее и симпатичнее (хотя я с ним и работал совсем немного)
P.S: Первый же запрос в гугле вывел меня на вовжопаподобный сайт, куда кто-то заботливо перекатал текст из магос.ру вики. Узнаю свой текст (саму команду говорил в своё время TOM_RUS, я лишь записал на человекопонятном языке на вики)
Код:
Чтобы скачать сорсы из определённой удалённой ветки:
Сначала просто выкачиваем сорсы:
git clone АДРЕС
Затем можем переключиться в любую выбранную удалённую ветку:
git checkout -b ИМЯ_ЛОКАЛЬНОЙ_ВЕТВИ origin/ИМЯ_УДАЛЁННОЙ_ВЕТВИ_КОТОРУЮ_ХОТИМ_ВЫКАЧАТЬ
Пример для сорсов Карателя:
git clone git://github.com/insider42/mangos.git
git checkout -b OLD origin/322_stable
Таким образом и вправду выкачивается очень быстро
+ ещё всё что там было:
Код:
Основные команды
Чтобы скачать сорцы
git clone git://github.com/mangos/mangos.git
Чтобы обновить:
git pull origin master
Работа с ветками
Создаем новую ветку:
git branch имя ветки
Чтобы просмотреть все ветки (локальные + ветки удалённого репозитория):
git branch -a
Посмотреть все ветки:
git branch
Переключемся в ветку:
git checkout имя ветки
Покажет изменения:
git status
Переключаемся в основную ветку:
git checkout master
Удаляем созданную ветку:
git branch имя ветки -D
Удаляем ветку с сервера:
git push <сервер> :heads/<удаляемая ветка>
Чтобы скачать сорсы из определённой ветки: Сначала просто выкачиваем сорцы, а потом:
git checkout -b ИМЯ_ЛОКАЛЬНОЙ_ВЕТВИ origin/ИМЯ_ВЕТВИ,_КОТОРУЮ_ХОТИМ_ВЫКАЧАТЬ
Работа с патчами
Создать патч файл:
git diff > имя файла.patch
Патч отличий чистых сырцов и ветки:
git diff master ветка -p > имя файла.patch
git diff master ветка > имя файла.patch
Создание патч файла из разницы ревизий:
git diff id_commit1 id_commit2 > имя_файла.patch
пример:
git diff 1f7e07689fcc8c60d6d768df8aa268d11a9e8bfe 69b2263cdb620020df0bc9968168046ff12fd7d4 > 7768-7785.patch
Создание патч файла git-репозитория патча:
git branch ИМЯ_ВЕТКИ,_КУДА_БУДЕМ_СЛИВАТЬ_ПАТЧ
git checkout ИМЯ_ВЕТКИ,_КУДА_БУДЕМ_СЛИВАТЬ_ПАТЧ
git pull git://github.com/charlie2025/mangos.git outdoor_0.12 (пример)
git diff master ИМЯ_ВЕТКИ,_КУДА_БУДЕМ_СЛИВАТЬ_ПАТЧ -p > outdoor.patch
идем в корневую папку мангоса и находим там outdoor.patch, его заливаем на форум либо на обменник и даём сцыль сюда
Применить патч:
git am < имя файла.patch
или
git apply < имя файла.patch
Применение патча с созданием новых файлов:
patch -p1 < имя файла.patch
или откатить определённый патч (например, при использовании кумулятивного патча):
patch -p1 -R < имя файла.patch
Другое
Добавить все изменения:
git add *
По отдельности:
git add имя файла
Сделать commit:
git commit -a -m "work patch"
Можно на него полюбоваться:
git log
Возвращение к чистым исходникам:
git clean -f -x -d
Реверт всех изменений в коде:
git reset --hard
Скачать определённую ревизию(к примеру 10 ревизий назад):
Скачивая самую свежую ревизию, Вы скачиваете всю историю изменений с момента создания репозитория.
Поэтому, чтобы получить исходники, например, которые были 10 коммитов назад на коммит (x-10) нужно:
git checkout master
git reset HEAD~10
Единственное - все изменения после коммита (x-10) буду потеряны.
Нужно будет заново закачать их. (с) begemot
Переход к определенной ревизии:
Найти код commit для нужной ревизии
git log -1 --grep=[7501]
где -1 это количество шагов к нашей ревизии 7501 от последней загруженной
вывод commit c879da174f4a2b6efbc59c43b34d580ff4de3efc
переход к нужной ревизии с созданием новой ветки "7501"
git checkout -b 7501 c879da174f4a2b6efbc59c43b34d580ff4de3efc
Посмотреть номер последнего коммита имеющихся исходников:
git show
Q:Вот ещё задачка: как заставить git не добавлять каждый раз в изменения определённую папку? например я положил папку ScriptDev2 в mangos\src\bindings, но при создании любых патчей она всплывает... черепашка тупо не трогала папки где нет её файлов, а как быть с git?
A: В .git/info/exclude добавь src/bindings/ScriptDev2/*
Совет: Если вы пользуетесь системой контроля версий git, то возможно вам надоедает набирать длинные команды git status, git checkout, git commit, git branch. Можно прописать в ~/.gitconfig для них короткие алиасы:
[alias]
ci = commit
co = checkout
st = status
br = branch
спасибо Skel за то, что он собрал всё в кучу:)
Взято с http://mangos.ru/wiki/index.php/FAQ_GIT