Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Прочая документация (http://mangos.ytdb.ru/forumdisplay.php?f=33)
-   -   Команды Git'a (http://mangos.ytdb.ru/showthread.php?t=53)

Max 07.03.2010 01:00

Команды Git'a
 
Чтобы скачать исходники из ветки Mangos

Код:

git clone git://github.com/mangos/mangos.git
Чтобы скачать и автоматически создать другую папку где будут лежать исходники.

Код:

git clone git://github.com/mangos/mangos.git название_папки
Чтобы обновить исходники в выбранной папке:

Код:

git pull origin master
Чтобы просмотреть все ветки (локальные + ветки удалённого репозитория):

Код:

git branch -a
Чтобы скачать исходники из определённой ветки: Сначала скачиваем исходники, потом:

Код:

git checkout -b имя_нужного_раздела origin/имя_нужного_раздела
Чтобы создать новую ветку:

Код:

git branch имя_раздела
Посмотреть все ветки:

Код:

git branch
Чтобы переключится в нужную ветку:

Код:

git checkout имя_раздела
Вывести изменения:

Код:

git status
Чтобы создать патч:

Код:

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 am < имя_патча.patch
или
Код:

git apply < имя_патча.patch
Применение патча с созданием новых файлов:

Код:

patch -p1 < имя файла.patch
Добавить все изменения:

Код:

git add *
По отдельности:

Код:

git add имя файла
Сделать commit:

Код:

git commit -a -m "work patch"
Можно на него полюбоваться:

Код:

git log
Возвращение к чистым исходникам:

Код:

git clean -f -x -d
Переключаемся в основную ветку:

Код:

git checkout master
Удаляем созданную ветку:

Код:

git branch имя_раздела -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 remote add name git://github.com/name/mangos.git
git fetch name
git checkout -b branch-name name/remoute_branch_name
git pull name remoute_branch_name

В:Вот ещё задачка: как заставить git не добавлять каждый раз в изменения определённую папку? например я положил папку ScriptDev2 в mangos\src\bindings, но при создании любых патчей она всплывает... черепашка тупо не трогала папки где нет её файлов, а как быть с git?

О: B .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


Чтобы пропатчить ScriptDev

Код:

git am src/bindings/ScriptDev2/patches/имя_патча.patch
или

Код:

patch -p1 < src/bindings/scriptdev2/patches/имя_патча.patch

lovepsone 11.03.2010 15:23

Код:

git log --reverse --pretty=tformat:'git cherry-pick %h # %s' | grep "\[patch"
просмотр патчей , которые были наложены на исходники

Nekita 13.03.2010 10:19

Git
 
Как в git писать такие команды, а то я не знаю как писать несколько команд сразу
git checkout -b vehicle
git pull git://github.com/Tasssadar/Valhalla-Project.git vehicle
git diff -p master vehicle > vehicle.patch.
Плиз подскажите.

tempura 13.03.2010 10:20

по очереди.

Maximus 13.03.2010 23:59

А как проверить какая ревизия ядра скачана?

CruncH 14.03.2010 00:17

Цитата:

Сообщение от Maximus (Сообщение 1893)
А как проверить какая ревизия ядра скачана?

git log

tempura 14.03.2010 03:54

Maximus
\src\shared\revision_nr.h
третья строка

Anti 30.03.2010 10:51

Самой короткий и удобный вид лога.
Код:

git log --format=oneline
Как удалить патч, если он уже "глубоко" в древе изменений.
1ый вариант (простой):
Код:

git revert <hash>
Как найти хэш коммита смотрите ниже.

2ой варинт (замысловатый):
  1. Находим нужный к удалению коммит в логе, смотрим первые 6 знаков хешкода с помощью выше указанной команды.
    Я для своего репо имею следующее:
    Код:

    Admin@MICROSOF-5E78BF /d/Mangos/MyMangos (master|AM)
    $ git log --format=oneline
    cec0160170f296a5b0b881c4c189585894e16566 Imporovment in prev commit.
    4777a341ed4215a7b53e5da032b3128592b8065a Player can't go in instance if encounte
    07b0ab09189cb4fe145d78a65b208b50fa1c1b4e Cosmetic fix.
    8e654624499e5f2a555698ecac262af06a068532 Merge branch 'master' of git://github.c
    ca6696c4006ce664597f2846beb9a3949c7a9a87 [patch 119] Fixed spell 67356. Patch pr
    5b2d06169358a311007240c04c68f28e92356afc Delete useless code.
    a73e510e58f3674992e6f785b02fbf5d922475cb [9629] Replace some PQuery/PExecute by
    c9c99ecb428c3b823bcbc4eea9509dc91cb34755 Add loot rolling for chests.
    78b56805f8593e1c9be463d01748a3d4bef58ada [9628] Fix typo from [8408].
    723e09656c51f3fe38c7699ad735dcd00300ddad [9627] Make mail load async.
    cd9a7b2feb486072e1fa3a6f7abc04d454156972 [9626] Fix one wrong cast case and simp
    2c46a1c25d92d095a4426796b92737f9be13b9a4 [9625] Add absent empty lines in end of
    c7e87337241236af311e30bfda1e0c83decac0a5 [9624] varargs list (...) auto promote
    e3b9a113088a610c2386769d823c08ebd57fcd8d [9623] Fixed typo in mangos.conf commen
    b2987eca678d476a3fb43f1a9eb82508d88f7e32 [9622] Add keys for gameobject table.
    d27800585ecafcd75a27b2feed198609d2c5102f [9621] Typo in CastSpell.
    3351bb69c088b6782931cdb6f18e16563894871c Merge branch 'master' of git://github.c
    3167eb522165901ad5fa3d581aee9cb0218f7d33 Fix typo.
    1d93647bdbc1f637642bedaea0eaee088c2b7cc1 Disallow using of 2 potions inone time.
    31c6c3bedaef8d1def07ff45abbad29a606d2748 [9620] Resolve linking problems for scr
    de9282080e2bd4041cbe2af190c26a3ac7b7dac9 [9619] Reset more UNIT_FIELD_FLAGS at l
    4f75ef6813a896e75c9116c70e8b048992e6951a [patch 118] Fixed spell 53551 and ranks
    40a3533a1b4025fa5b9a06f9f1b556773d136f42 [patch 117] Fixes passed roll that was

    Мне нужно удалить c9c99ecb428c3b823bcbc4eea9509dc91cb34755
  2. Делаем следующее
    Код:

    git show c9c99e > tmp.patch
    Этой командой мы вызываем лог изменений определённого коммита и помещаем его в временный файл, либо куда-то ещё.
    ВАЖНО! ">" - есть вызов потока. В данном случае StreamOut. Потоки универсальны и могут использоваться для занесения любых выводов в файл. Если интересно, можете попробовать следующее.
    Код:

    git log --format=oneline > changelog.log
  3. И так после краткого отвлечения вернёмся к нашему коммиту, который надо удалить.
    Собственно удаляем изменения.
    Код:

    Admin@MICROSOF-5E78BF /d/Mangos/MyMangos (master|AM)
    $ patch -D -p1 < tmp.patch

  4. Далее нужно закомитить изменения например с помощью
    Код:

    Admin@MICROSOF-5E78BF /d/Mangos/MyMangos (master|AM)
    $ git commit -asm "Revert changes in c9c99e.


lovepsone 01.04.2010 16:27

люди может кто знает как сразу можно сделать патч определенного комита ???

CruncH 01.04.2010 20:13

Цитата:

Сообщение от lovepsone (Сообщение 3574)
люди может кто знает как сразу можно сделать патч определенного комита ???

стоило чуть выше глаза поднять, это было в предыдущем посте
Цитата:

Делаем следующее
Код:

git show c9c99e > tmp.patch
Этой командой мы вызываем лог изменений определённого коммита и помещаем его в временный файл, либо куда-то ещё.
ВАЖНО! ">" - есть вызов потока. В данном случае StreamOut. Потоки универсальны и могут использоваться для занесения любых выводов в файл. Если интересно, можете попробовать следующее.

CruncH 02.04.2010 23:51

странно то что тут не упоминали вот эту ссылку http://ytdb.ru/Yuriy/GIT%20-%20%D0%B...%BE%20(RU).chm , она была раньше тут в какой то теме написана, но я эту тему потерял.

Насколько правильный вариант загрузки форк ветки в локальный репозиторий основной ветки ? Эти команды раньше обсуждались, но увы я их тут не нашел. Раньше ими не пользовался, а щас понадобились.
Код:

git remote add name git://github.com/name/mangos.git
git fetch name
git checkout -b branch-name name/remoute_branch_name
git pull name remoute_branch_name

p.s. на уникс системах советую юзать zsh как основной шел, он хорошо поддерживает авто дополнение параметров, почти у всех программ. У гита еще поддерживает и автодополненние имен веток.

tempura 03.04.2010 00:44

Цитата:

Сообщение от CruncH (Сообщение 3673)
она была раньше тут в какой то теме написана, но я эту тему потерял.

http://ru-mangos.ru/showthread.php?t=55

На странице расширенного поиска внизу есть облако тегов. Кажется любая ссылка со словом "документация" (тем более - самая крупная) ведет именно на эту тему.

Maximus 08.04.2010 19:57

Ребят подскажите что не так делаю? Мне надо исходники ядра от 9691, на момент написания версия ядра 9697.
Я скачал 9697 и после отрезетил вот так git reset HEAD~6
Вроде всё ок, но ревизия осталась 9697.
Буду благодарен за любую инфу и помощь.

CruncH 08.04.2010 21:02

Цитата:

Сообщение от Maximus (Сообщение 4085)
Ребят подскажите что не так делаю? Мне надо исходники ядра от 9691, на момент написания версия ядра 9697.
Я скачал 9697 и после отрезетил вот так git reset HEAD~6
Вроде всё ок, но ревизия осталась 9697.
Буду благодарен за любую инфу и помощь.

самый простой вариант, и думаю наиболее правильный это использовать отдельную ветку, оставляя master ветку чистой.
git checkout -b имя_новой_ветки хеш_коммита

это было в первом сообщение. действовало у меня 100%

Fedia22 09.04.2010 07:29

Вложений: 1
ProGit
Everything you need to know about the Git distributed source control tool

Scott Chacon
(foreword ba Junio C Hamano, Git project leader)

Удалены пустые страницы, reduced filesize.

Anti 09.04.2010 08:08

Цитата:

Сообщение от Maximus (Сообщение 4085)
Ребят подскажите что не так делаю? Мне надо исходники ядра от 9691, на момент написания версия ядра 9697.
Я скачал 9697 и после отрезетил вот так git reset HEAD~6
Вроде всё ок, но ревизия осталась 9697.
Буду благодарен за любую инфу и помощь.

Пробуй лучше: git reset <commit_hash>

Inquisitor 10.04.2010 11:10

Цитата:

Сообщение от Maximus (Сообщение 4085)
Ребят подскажите что не так делаю? Мне надо исходники ядра от 9691, на момент написания версия ядра 9697.
Я скачал 9697 и после отрезетил вот так git reset HEAD~6
Вроде всё ок, но ревизия осталась 9697.
Буду благодарен за любую инфу и помощь.

забыл --hard
Код:

git reset --hard HEAD~6

Insider42 10.05.2010 13:53

В последнее время стал беспокоить с ужасающей скоростью растущий размер локального репозитория GIT, пару месяцев назад вместе с исходниками папка весила 180 мб, сейчас уже 303 мб (причем 220 мб из них это папка .git).
Судя по всему GIT ведет какие-то логи операций или держит копии каждого файла на каждую ревизию (?), отчего и получается что размер за день (а было всего 4-5 коммитов) может вырости от 300мб до 303 мб, хотя коммиты изменяли всего пару тройку строчек кода... Причем тут без разницы сколько у меня бранчей, удалил пару - размер не изменился, будто бы он их удаляет из заголовка, но хранит где-то копию.
Работаю с программой TortoiseGIT.
Кто-нибудь сталкивался с данной проблемой? Может есть какая-нибудь команда для чистки папки ".git" от мусорных файлов?
git clean -f -x -d и git checkout -f не предлагать - они чистят исходники, но не папку ".git"

CruncH 10.05.2010 15:56

Цитата:

Сообщение от Insider42 (Сообщение 6057)
...
Кто-нибудь сталкивался с данной проблемой? Может есть какая-нибудь команда для чистки папки ".git" от мусорных файлов?
git clean -f -x -d и git checkout -f не предлагать - они чистят исходники, но не папку ".git"

Пофлужу немного...

юзай команду git gc, нашел ее одном из справочников, ссылку выкладывали ранее с кучей другой документации. Эта ссылка есть несколько постов выше...

Grinder 25.01.2011 00:28

А подскажите пожалуйста как сделать коммит, так чтобы было видно автора патча? Вот например как здесь:
https://github.com/mangos/mangos/com...9a9055af1279c4
Здесь четко видно кто автор патча и кто закомитил его.

LordJZ 25.01.2011 00:34

Код:

git commit --author="name <email@domain.example>"

Grinder 25.01.2011 06:53

Тоесть получается полная команда выйдет такой?
Код:

git commit --author="name <email@domain.example>" -m 'Коммит'

rsa 25.01.2011 07:19

если ваш бранч лежит на гитхабе и оригинальный автор тоже зарегистрирован на гитхабе до в выражениии author достаточно ника.
git commit -a --author=faramir118

alien 03.03.2011 21:53

А подскажите вот такую вещь.
Хочу сделать форк проекта. Как мне его с оригиналом мерджить?
И если к примеру сам проект не на джитхабе, а мой там есть какие-нибудь в этом плане проблемы?
UPD:
Или все банально, мерджу на локальный камп Делаю комит и заливаю к себе?

Ginezes 15.05.2011 16:32

Где гит создает директории и куда сохраняет исходники?

tempura 15.05.2011 18:13

Цитата:

Сообщение от Ginezes (Сообщение 22429)
Где гит создает директории и куда сохраняет исходники?

Нигде и никуда. Гит не делает ничего сам.

partizanes 19.08.2012 10:41

Обучающий курс (онлайн)
http://try.github.com/levels/1/challenges/1

Еще один
http://githowto.com/ru/


Текущее время: 11:16. Часовой пояс GMT +3.

ru-mangos.ru - Русское сообщество MaNGOS