На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> GIT и конфликты
    Читаю документацию по ГИТ в виде мастера и тут не могу воссоздать конфликт http://githowto.com/resolving_conflicts

    Что бы не делать все те 30 шагов что в руководстве опишу на пальцах:
    Шаг 1. имеем файл 1.txt с таким содержанием (две пронумерованные строки)
    Цитата
    1.
    2.

    Шаг 2. делаем отдельную Ветку "тест" и правим строку 1 пишем туда слово first , комитим
    Шаг 3. возвращаемся в ветку "мастер" и правим файл дописывая во вторую строку слово second и коммитим
    Шаг 4. возвращаемся в ветку "Тест" и делаем
    ExpandedWrap disabled
      git merge master


    Вопрос: ГИТ стал такой умный что разные строки в файле сам совмещает и нет конфликта или я делаю что-то не так?
      в книге этой тут аналогичный конфликт
      Цитата
      <<<<<<< HEAD
      <!-- Author: Marina Pushkova (marina@githowto.com) -->
      <html>
      <head>
      <link type="text/css" rel="stylesheet" media="all" href="style.css" />
      </head>
      <body>
      <h1>Hello, World!</h1>
      </body>
      </html>
      =======
      <!-- Author: Marina Pushkova (marina@githowto.com) -->
      <html>
      <head>
      </head>
      <body>
      <h1>Hello,World! Life is great!</h1>
      </body>
      </html>
      >>>>>>> master
      Конфлик в разных строках и ГИТ слил файлы без конфликта
        Если в первом случае я бы ещё засомневался можно-ли их безопасно совместить, то во втором даже у банального patch проблем не возникнет.

        Добавлено
        Цитата orb @
        git merge master
        Никогда не понимал, зачем сливать мастер к другой ветке.
          Цитата Dark Side @
          то во втором даже у банального patch проблем не возникнет.
          почему тогда http://githowto.com/resolving_conflicts есть конфиликт?
          у автора старая версия ГИТа?
            или это просто пример

            Добавлено
            на самом деле там увидеть проблему нереально. Надо смотреть как минимум вывод различий

            Добавлено
            Смоделировал первый пример - выдал конфликт, как я и ожидал.

            Кстати, про то что написано про разрешение конфликтов по той ссылке - забудь и не вспоминай. git mergetool - наше всё. Только настроить надо - не у всех хватает нервов работать с дефолтным vimdiff.
              Цитата Dark Side @
              Кстати, про то что написано про разрешение конфликтов по той ссылке - забудь и не вспоминай
              а что там не так?
                Для тех, кому нравится именно такой способ разруливать конфликты - ничего. А любителям vimdiff, tortoisediff и прочих интерактивных такой метод может показаться вполне себе через опу. Для меня всё в большинстве случаев сводится к git mergetool (запускается сравнивалка из tortoise), del /s *.orig и далее по интересам: commit, rebase --continue и т.п. Я даже не особо смотрю, какие файлы файлы просили слить.

                Добавлено
                Пробежался по этому howto - как-то уж совсем сухо и без пояснений, хотя местами это очень критично.
                  Цитата Dark Side @
                  Пробежался по этому howto - как-то уж совсем сухо и без пояснений, хотя местами это очень критично.
                  а можешь критику сделать подробнее
                  Это проект знакомого я как раз его изучаю детально.
                  Я уже нашел пару неточностей мелких. и вот с этим не могу разобраться почему в примере есть конфликт, а у меня не выходит :(
                    orb, в том примере изменённые строки достаточно далеко друг от друга и алгоритму вполне может хватить этого чтобы понять, что это изменения в разных блоках кода. Если надо 100% конфликт, то лучше всё-таки менять одни и теже строки, либо соседние.

                    По критике:
                    лучше подробнее остановиться на описании параметрах reset: --hard, --soft, --mixed. Стандартная справка бывает не всем понятна.

                    Не нашел ни слова о fast-forward и вообще описании вывода команд. Всё-таки читателю стоит понимать, что значит behind, ahead и diverged, а также, почему push отказывается работать.

                    Смущает, что описание bare-репозиториев находится довольно далеко от начала работы с удалёнными вообще.

                    Отсутствие авторизации git-server иногда приводит к тому, что сервер по дефолту закрыт для записи. ИМХО, стоит бегло упомянуть об альтернативных транспортах работы с удалёнными репами.
                    Здесь кратко о ssh: Если у человека есть опыт работы с ssh-сервером, то ему достаточно обеспечить доступ к катологу с репозиториями через протокол (т.е. примерно как с sftp) и (желательно, но необязательно) проходить авторизацию через пользователя у которого в качестве оболочки установлена git-shell.

                    Последний пукнт (51) вообще не понял.
                      спасибо
                        Теперь проблема тут http://githowto.com/pulling_shared_changes
                        Цитата
                        C:\Program Files\Git/libexec/git-core/git-pull cannot be used without a working tree
                          Не все операции выполняются из bare-репозитория. pull в их числе.
                            комбинация git fetch и git merge — работает
                            git pull — не работает?!?!!

                            в консоле все работает (в линуксе)
                              Цитата orb @
                              в консоле все работает (в линуксе)
                              Репозиторий - "чистый", без working tree ?

                              Добавлено
                              ExpandedWrap disabled
                                yuri@jureth /home/git/reps/achromate.git $ git fetch .
                                From .
                                 * branch            HEAD       -> FETCH_HEAD
                                yuri@jureth /home/git/reps/achromate.git $ git merge
                                fatal: This operation must be run in a work tree
                                yuri@jureth /home/git/reps/achromate.git $ git pull
                                fatal: /usr/libexec/git-core/git-pull cannot be used without a working tree.
                                yuri@jureth /home/git/reps/achromate.git $
                                Цитата Dark Side @
                                без working tree ?
                                не знаю
                                делал по инструкции
                                  * в свои инструкции наверное буду добавлять пункт "убить себя"

                                  Ты не можешь отличить обычный репозиторий от репозитория без рабочего дерева?
                                    Цитата Dark Side @
                                    Ты не можешь отличить обычный репозиторий от репозитория без рабочего дерева?

                                    не могу :(
                                      обычный репозиторий представляет собой каталог, в котором есть папка .git с данными репозитория, и всё остальное - т.е. данные, которые версионизируются - рабочее дерево.

                                      Чистый (bare) репозиторий представляет собой папку, которая непосредственно содержит данные репозитория и больше ничего. Для понимания эта папка имеет расширение .git, но это не обязательно.

                                      ExpandedWrap disabled
                                        смотрим каталог с репами, чтобы убедится в отсутствии обмана :)
                                        yuri@jureth /tmp/test $ ls /home/git/reps/ -a
                                        .  ..  achromate.git  illiquids.git  powerScripts.git  tobolsk.git  yiiBlank.git  yiiDateTimePicker.git  yiiGridViewEx.git  yiiListDataColumn.git  yiiPositionColumn.git
                                        смотрим существующий bare-репозиторий
                                        yuri@jureth /tmp/test $ ls /home/git/reps/yiiPositionColumn.git/ -a
                                        .  ..  config  description  HEAD  hooks  info  objects  refs        
                                        Клонируем
                                        yuri@jureth /tmp/test $ git clone /home/git/reps/yiiPositionColumn.git/ ./
                                        Cloning into ....
                                        done.
                                        yuri@jureth /tmp/test $ ls -a
                                        видим папку .git и файл, принадлежащий working tree
                                        .  ..  .git  positionColumn.php
                                        yuri@jureth /tmp/test $ cd ../test2/
                                        Клонируем как bare
                                        yuri@jureth /tmp/test2 $ git clone --bare /home/git/reps/yiiPositionColumn.git/ ./
                                        Cloning into bare repository ....
                                        done.
                                        yuri@jureth /tmp/test2 $ ls -a
                                        Видим содержимое репозитория, никаких следов working tree
                                        .  ..  config  description  HEAD  hooks  info  objects  packed-refs  refs
                                        yuri@jureth /tmp/test2 $
                                      Сообщение отредактировано: Dark Side -
                                      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                      0 пользователей:


                                      Рейтинг@Mail.ru
                                      [ Script execution time: 0,0468 ]   [ 16 queries used ]   [ Generated: 27.04.24, 03:24 GMT ]