Як отримати зміни з іншої гілки


85

Зараз я працюю на featurexвідділенні. Наша головна гілка називається галузь our-team. Відтоді, як я почав працювати featurex, у відділення було внесено більше змін our-team. Перш ніж натискати featurexна злиття, я хотів би отримати локально всі зміни з our-teamгілки, featurexщоб я міг забезпечити, щоб все працювало належним чином.

Я зробив це локально, щоб отримати всі останні зміни від our-team.

git checkout our-team
git pull

Як я можу це зробити?


6
Ви поставили запитання дуже свідомо і точно. Це полегшує відповідь, а також легше розуміє таких людей (як я).
douglas.kirschman

Відповіді:


47

Ви можете використовувати rebase , наприклад, git rebase our-teamколи ви перебуваєте у своїй гілціfeaturex

Це перемістить початкову точку гілки в кінці вашої our-teamгілки, об’єднавши всі зміни у вашій featurexгілці.


3
Я буду використовувати це в майбутньому, однак, цього разу я зробив наступне ... чи це має такий самий ефект? git checkout our-team git pull git checkout featurex git merge our-team
Ентоні

5
Я хотів би наголосити: якщо ви робите це, і у вас немає змін з our-teamлокального рівня, вам потрібно буде запустити його git fetch && git rebase origin/our-team. Ваші команди припускають, що сховище оновлено раніше.
Макото

99
  1. перейдіть до головного відділення our-team

    • git checkout наша команда
  2. витягнути всі нові зміни з our-teamгілки

    • git pull
  3. йди до своєї філії featurex

    • git перевірка featurex
  4. об'єднати зміни our-teamгілки у featurexгілку

    • злиття git our-team
    • або git cherry-pick,{commit-hash} якщо ви хочете об'єднати конкретні коміти
  5. підштовхуйте свої зміни до змін our-teamгілки

    • git push

Примітка : ймовірно, вам доведеться виправляти конфлікти після об’єднання our-teamгілки у featurexгілку перед натисканням


куди б увійшов git pull?
chia yongkang

26
git fetch origin our-team

або

git pull origin our-team

але спочатку ви повинні переконатися, що ви вже у гілці, яку ви хочете оновити (featurex).


8

Ви майже там :)

Залишилося лише

git checkout featurex
git merge our-team

Це об’єднає нашу команду у featurex.

Вищевикладене передбачає, що ви вже здійснили / закріпили свої зміни у featurex, якщо це не так, вам потрібно буде зробити це спочатку.


5

Для інших людей, які стикаються з цим повідомленням у google. Є 2 варіанти, або об’єднання, або перебазування вашої гілки. Обидва працюють по-різному, але мають схожі результати.

Загальноприйнятий відповідь є перебазуватися . Це призведе до всіх виконаних комітів, our-team а потім застосує зроблені коміти featurex, що запропонує вам об’єднати їх за необхідності.

Одне застереження щодо перебазингу полягає в тому, що ви втрачаєте / переписуєте історію гілок, по суті, повідомляючи git, що ваша гілка починалася не з коміту 123abc, а з коміту 456cde. Це буде створювати проблеми для інших людей , що працюють на гілці, і деякі дистанційні інструменти будуть скаржитися на це. Якщо ви впевнені у тому, що робите, це --forceпрапор.

Те , що пропонують інші плакати , - це об’єднання . Це призведе до того, що featurexгілка прийме будь-який стан і спробує об’єднати її з поточним станом our-team, що спонукає вас зробити один великий, об’єднаний коміт та виправити всі помилки об’єднання перед натисканням our-team. Різниця полягає в тому, що ви подаєте ваші featurexкоммітов , перш ніж на our-teamнових фіксацій , а потім фіксуючи відмінності. Ви також не переписуєте історію, натомість додаєте до неї один коміт, а не переписуєте ті, що були раніше.

Обидва варіанти дійсні і можуть працювати в тандемі. Зазвичай (під цим я маю на увазі, якщо ви використовуєте широко розповсюджені інструменти та методологію, такі як git-flow ) для гілки об’єктів, це об’єднання її в основну гілку, часто проходячи через запит на злиття, та вирішення всіх конфліктів. які виникають в одному (або в декількох) комітах злиття.

Перебазування - це цікавий варіант, який може допомогти вам виправити свою гілку перед тим, як врешті-решт пройти об’єднання, і полегшити біль від необхідності зробити один великий коміт об’єднання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.