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

      Не согласен :) TFS - вполне себе шустро работает.

      Цитата Flex Ferrum @
      TFS Git

      Не знаю такого :)


      Цитата negram @
      запомни пару простых комманд

      И как мне этими командами сделать то, что я нарисовал в посте Как работают с git'ом? (сообщение #3707209)?

      Добавлено
      Цитата negram @
      git merge <другая ветка>
      Мержит "другая ветка" в текущую.

      Ну вот у меня есть мастер, с котого я неделю назад ответвил бранч.
      Иду в папку с бранчем, говорю "merge" в окошке выбираю "from master" клацаю "ОК" .... "you are up to date" и нихрена не мержится и не переносится из мастера. бранч остается без изменений.
        Цитата OpenGL @
        Вот мне тоже так кажется - гитхаб весьма удобен (по-моему самый удобный из альтернатив), и поддерживает только гит.
        Я сижу на битбакете, он немного проигрывает гитхабу в функциональности, зато можно бесплатно пять приватных реп сделать, на гитхабе, ЕМНИП, бесплатно, только открытые репы.
          Цитата Fester @
          Иду в папку с бранчем, говорю "merge" в окошке выбираю "from master" клацаю "ОК" .... "you are up to date" и нихрена не мержится и не переносится из мастера. бранч остается без изменений.
          А в мастере есть изменения? я так понял, мастер в твоей схеме -- это то, что на сервере? Тогда:
          Переключаешься на мастер, там `git pull'
          Возвращаешься в свою ветку, там `git merge master'

          Скрытый текст
          можно сразу git merge origin/master -- тогда изменения подтянуться из удалённого мастера, но путь это будет потом :)
            Скрытый текст
            Цитата negram @
            можно сразу git merge origin/master -- тогда изменения подтянуться из удалённого мастера, но путь это будет потом

            Цитата Flex Ferrum @
            git fetch
            git rebase origin/master


            Ты про fetch забыл. Изменения с сервера то подтянуть надо.
              Цитата Flex Ferrum @
              Скрытый текст
              Цитата negram @
              можно сразу git merge origin/master -- тогда изменения подтянуться из удалённого мастера, но путь это будет потом

              Цитата Flex Ferrum @
              git fetch
              git rebase origin/master


              Ты про fetch забыл. Изменения с сервера то подтянуть надо.

              Скрытый текст
              чорт, да :) просто я перед каждым общением с удалённой репой `git pull' делаю :)
                Цитата negram @
                А в мастере есть изменения?

                да


                Цитата negram @
                я так понял, мастер в твоей схеме -- это то, что на сервере?

                на сервере там все, в том числе и бранч :)
                мастер - это то, куда коммитят все. а в бранч коммичу только я. и то и другое пуллом отправляю на сервер и оно там каждую ночь билдится.

                Цитата negram @
                Переключаешься на мастер, там `git pull'
                Возвращаешься в свою ветку, там `git merge master'

                Погоди :) Не так быстро, я записываю :)
                1) захожу в папку с бранчем
                2) switch -> master
                3) pull
                3.5) тут будут конфликты
                4) switch -> branch
                5) merge master
                6) commit
                7) push

                я все правильно понял?
                  Цитата Fester @
                  я все правильно понял?

                  Да. Только пункта 3.5 не будет - если ты в свой (локальный) мастер ничего не коммитил. А ты, наверняка, не коммитил. Но будет пункт "5.5 тут будут конфликты".

                  Добавлено
                  И п. 6 не будет. merge сразу локальный коммит делает.
                    Ок, пойду эксперементировать :)
                    Если что, то знайте, что меня убили коллеги :lol:
                      Правда, в результате всего этого действа у тебя будет так называет "Merge commit", в котором будет указано, с какой ветки ты мержился и какие конфликты были. Некоторым владельцам репозиториев такие коммиты не нравятся. Поэтому вместо merge и используется rebase.
                        Цитата Flex Ferrum @
                        Некоторым владельцам репозиториев такие коммиты не нравятся.
                        :blink: Вот долбаё >:(
                          negram, в этом есть определённая логика. rebase ты делаешь тогда, когда забираешь чужие коммиты к себе в ветку - ребейзишься на master, или на origin/master, или ещё куда (типа git pull --rebase). При этом всё делается аккуратно - все твои коммиты, сделанные с последней точки ветвления, пытаются накатиться поверх нового содержимого. А вот когда ты хочешь свою ветку затащить в master - ты уже делаешь merge. И вот чтобы не было merge-коммита ты сначала делаешь rebase своей ветке, а потом спокойно её мёржишь.
                            Говорят гитхаб научился делать ребейз автоматически прямо при мердже пулл-реквеста.
                              Цитата Flex Ferrum @
                              И вот чтобы не было merge-коммита
                              Вот этого я понимать отказываюсь. Во-первых, этот коммит не враг, а друг: я всегда знаю какой коммит нужно откатить, если намержил чего-то не того, и из твоего поста видна одна лишь эстетическая составляющая "чтобы не было мерж-коммита" и логическая компонента выглядит притянутой за уши. Во-вторых, проглядывая историю ты всегда видишь этот эвент. Пусть это не всегда нужно, но лишней информацией это не будет.
                                Я обычно перед тем как "смерджить все свое локальное курево в мастер" делаю патч.
                                Возможно я это уже где то писал.
                                Т.е. делаю дифф в бинарном виде, применяю его на чистой ветке и все.
                                Имеем супер патч, в один коммит. Не надо никаких "мердж коммитов" и т.п. смуты.
                                делаем так:
                                git checkout master
                                git pull --rebase
                                git checkout -b CLEAN_BRANCH_NAME
                                git diff --binary CLEAN_BRUNCH_NAME...DEV_BRANCH_NAME_WITH_100500_INTERMEDIA_COMITS > my.patch
                                git apply -3 my.patch
                                git commit -m "my super feature"
                                git push origin HEAD

                                И все, с этого бранча уже можно поднимать красивый пулреквест.
                                А как у меня там мысль ходила туда сюда в сотне коммитах - этого потомкам знать не надо, пусть я буду в их глазах идеален и пишу сразу как положено :)

                                Добавлено
                                Вообще не представляю себе теперь жизни в какой то другой системе контроля версий. Правда, так и не осилил никакой "красивой оболочки" для git, все в консольке. Параллельно, правда, в Perforce живу, ну это небо и земля - особенно что касается скорости.
                                Сообщение отредактировано: Бобёр -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (9) 1 2 [3] 4 5 ...  8 9 все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0394 ]   [ 15 queries used ]   [ Generated: 6.12.24, 17:28 GMT ]