На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (9) [1] 2 3 ...  8 9 все  ( Перейти к последнему сообщению )  
> Как работают с git'ом?
    Не понимаю вообще! Это какое-то говнище просто.

    Короче говоря, есть довольно большая задача. Седеллал для нее отдельный бранч. Делаю, комичу. Теперь хочу синхронизировать с мастером, но пока что в мои планы не входит комитить в мастер. Т.е. я хочу взять актуальную версию мастера с замерджить ее в свой бранч. Как, черт побори (тут используются другие слова), это сделать? :wall:
      ExpandedWrap disabled
        git checkout master
        git pull --rebase
        git checkout your_branch
        git rebase master

      или
      ExpandedWrap disabled
        git fetch
        git rebase origin/master

      Вот здесь подробнее.

      Если работаешь с этим добром под виндой - ставь TortuiseGit, выбираешь там (в контекстной менюшке эксплорера) команду rebase и в открывшимся диалоге выбираешь ветку, на которую будешь перебазироваться.

      Добавлено
      А вообще матюги при начале работы с git'ом - дело обычное. Непривычная у него модель ведения репозитория. Но потом, вроде, проникаешься.
      Сообщение отредактировано: Flex Ferrum -
        консоль галимая
          Толи я не понял, толи это не совсем то.

          Я хочу сделать так:
          Прикреплённая картинка
          Прикреплённая картинка


          Добавлено
          Цитата Flex Ferrum @
          Вот здесь подробнее.

          Может это и подробнее, но почему там стрелки все в обратном направлении? Я из этих картинок нихрена не понял :wall: Хрен поймешь, в каком направлении развиваются мастер и бранчи :crazy:
            Цитата Fester @
            Толи я не понял, толи это не совсем то.

            Я хочу сделать так:

            Ты не понял. Это именно то. Смотри, ты в какой-то момент отбранчевался и начинаешь пилить свой мегафункционал. Пилишь-пилишь, коммитишь в свой бранч. master за это время уже уехал. У тебя естественное желание - подсосать всё из мастера и накатить "сверху" свои коммиты. Для этого ты делаешь следующее:
            1. Обновляешь свой локальный мастер:
            ExpandedWrap disabled
              git checkout master
              git pull --rebase

            Таким образом в твоём локальном мастере оказываются все коммиты с сервера.
            2. Перебазируешь свою ветку на новый мастер:
            ExpandedWrap disabled
              git checkout your_branch
              git rebase master

            То есть переключаешься обратно на свою ветку и ребейзишь её на актуальный мастер. git при этом делает своеобразный merge - забирает коммиты из свежего (локального) мастера и пытается накатить сверху твои коммиты. Может получиться не для всего. В этом случае возникнут конфликты, которые он предложит тебе отрезолвить.

            Есть другой вариант (применяется у нас в силу определённых обстоятельств непреодолимой силы в виде тимлида):
            1. Переключаешься на мастер.
            2. Ребейзишься
            3. Отрезаешь от него новую ветку типа your_branch_new
            4. Переключаешься на неё
            5. Мерджишь (git merge) в эту новую ветку свою старую ветку.
            6. Профит - получаешь нужное тебе объединение.

            Чтобы не придумывать новые имена, можешь старую предварительно переименовать в your_branch_old, отрезать новую с привычным именем, а старую (после мерджа) удалять.
              Flex Ferrum
              и что, git всегда корректно сам объеденияет коды? Если в мастере код поменяли местами(по тексту перенесли в другое место) он это поймет?
                Цитата ^D^ima @
                Flex Ferrum
                и что, git всегда корректно сам объеденияет коды? Если в мастере код поменяли местами(по тексту перенесли в другое место) он это поймет?

                Ну, не всегда сам, не всегда корректно, но в целом да, с задачей справляется.
                  Цитата Flex Ferrum @
                  1. Обновляешь свой локальный мастер:


                  Цитата Flex Ferrum @
                  2. Перебазируешь свою ветку на новый мастер:


                  Цитата Flex Ferrum @
                  То есть переключаешься обратно на свою ветку и ребейзишь её на актуальный мастер.


                  &)$ :wall: Какой такой "локальный мастер"? Какой "новый мастер"? Еще какой-то "актуальный мастер". У меня один мастер и один бранч. Что из этих трех мастеров - мастер, а что бранч? Накой хрен мне столько всякой бесполезной шняги?

                  Уши оборвать этому Торвальдсу! >:(


                  Цитата Flex Ferrum @
                  1. Переключаешься на мастер.
                  2. Ребейзишься
                  3. Отрезаешь от него новую ветку типа your_branch_new
                  4. Переключаешься на неё
                  5. Мерджишь (git merge) в эту новую ветку свою старую ветку.
                  6. Профит - получаешь нужное тебе объединение.

                  :wall: Почему все тащатся с этого говна? :wall:
                    Цитата Fester @
                    Почему все тащатся с этого говна?

                    Модно же )
                      Цитата Fester @
                      Какой такой "локальный мастер"? Какой "новый мастер"? Еще какой-то "актуальный мастер". У меня один мастер и один бранч. Что из этих трех мастеров - мастер, а что бранч? Накой хрен мне столько всякой бесполезной шняги?

                      Уши оборвать этому Торвальдсу!

                      Я думаю, тебе стоит начать с того, чтобы почитать - что такое git и как он работает. :)
                        Цитата Fester @
                        Почему все тащатся с этого говна?

                        Видимо, такова судьба всех продуктов Торвальдса :crazy:
                          Просто эта система контроля версий принципиально отличается от тех, с которыми ты, видимо, привык работать до этого. Она построена не на "традиционной" клиент-серверной архитектуре, где есть выделенный сервер, а у пользователей - локальный снимок, с которым они работают. git - это чисто распределённая система равноправных репозиториев, которые определённым образом можно синхронизировать. И в этой системе git server - это просто ещё одна копия репозитория, в которую можно заливать данные. При этом у всех пользователей - свои, локальные, полноценные копии. Поэтому я и говорю, что есть "локальный мастер" (версия master-ветки в репозитории на твоём диске), а есть master в репозитории на сервере.
                            Цитата Fester @
                            Не понимаю вообще! Это какое-то говнище просто.
                            Гит этим славится. Он очень недружелюбен к юзверям. Чтобы полноценно работать с гитом нужно тщательно изучить принципы его работы. Вместо того чтобы заниматься делом, тебе приходится ковырятся в гайдах, писать на форумах, по сто раз клонировать удаленную репу. Торвальдс сделал систему заточенную под его собственные нужды, то бишь разработка ядра линупса, а хомячки дружно подхватили и сделали его де-факто стандартом. Пичаль, бида.
                              Цитата applegame @
                              а хомячки дружно подхватили и сделали его де-факто стандартом. Пичаль, бида.

                              Что-то этих хомячков подозрительно много. :) А публичные гит-сервера типа GitHub, GitLab, BitBucket и прочие, растут и множатся, как грибы после дождя. :)
                                Цитата Flex Ferrum @
                                Просто эта система контроля версий принципиально отличается от тех, с которыми ты, видимо, привык работать до этого. Она построена не на "традиционной" клиент-серверной архитектуре, где есть выделенный сервер, а у пользователей - локальный снимок, с которым они работают. git - это чисто распределённая система равноправных репозиториев, которые определённым образом можно синхронизировать. И в этой системе git server - это просто ещё одна копия репозитория, в которую можно заливать данные. При этом у всех пользователей - свои, локальные, полноценные копии. Поэтому я и говорю, что есть "локальный мастер" (версия master-ветки в репозитории на твоём диске), а есть master в репозитории на сервере.
                                Mercurial работает на тех же принципах, что и Git, но при этом не требует долгого и вдумчивого курения мануалов для относительно простых операций. Так что это не оправдание.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (9) [1] 2 3 ...  8 9 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0502 ]   [ 17 queries used ]   [ Generated: 5.11.24, 08:53 GMT ]