Об’єднайтесь до конкретного комітету


372

Я створив нову гілку, названу newbranchз masterгілки в git. Тепер я зробив якусь - то роботу і хочу об'єднати newbranchв master; однак я вніс кілька додаткових змін newbranchі хочу об'єднатись newbranchдо четвертої з останньої віддачі master.

Я використовував, cherry-pickале він показує повідомлення, щоб використовувати правильні параметри:

git checkout master    
git cherry-pick ^^^^HEAD newbranch

Чи можу я використовувати mergeзамість цього git ?

git merge newbranch <commitid>

Відповіді:


592

Впевнений, що у masterфілії все, що вам потрібно зробити, це:

git merge <commit-id>

де commit-idє хеш останнього комітету з того, newbranchщо ви хочете отримати у своєму masterвідділенні.

Ви можете дізнатися більше про будь-яку команду git, виконавши git help <command>. Це так і є git help merge. Документи говорять, що останній аргумент для mergeкоманди є <commit>..., тому ви можете передати посилання на будь-який комітет або навіть декілька комітів. Хоча я ніколи не робив останнього сам.


30
не тільки одну фіксацію , але все робить першcommit-id
Дау

53
Так, це буде об'єднати всі коммітов newbranchз того часу , його історія розходилася від masterдо commit-idв masterгалузь. Ви можете вважати git merge <commit-id>об'єднанням якоїсь неназваної гілки, яка закінчується, commit-idу вашу поточну гілку.
KL-7

2
Чи можу я об'єднатись між двома локальними гілками, крім master, використовуючи ідентифікатор commit?
skt

1
@skt, ви можете, просто перейдіть на місцеву гілку, в яку ви хочете об'єднатися перед використанням git merge. тобто скажіть, що ви хочете об'єднати 18a6fac з гілки b2 в гілку b1, просто зробітьgit checkout b1; git merge 18a6fac
XioRcaL

1
Це, здається, не працює, якщо я перебуваю на гілці, я хочу об'єднатись, і є якась інша гілка з командами AB і C, і я зливаюся в C, вона отримує лише зміни, внесені в C, а не A і B.
ggb667

12

Щоб гілка була чистою, ви можете зробити це:

git checkout newbranch
git branch newbranch2
git reset --hard <commit Id> # the commit at which you want to merge
git checkout master
git merge newbranch
git checkout newbranch2

Таким чином, newbranch закінчиться там, де він був об'єднаний у master, і ви продовжите роботу над newbranch2.


1

Запустіть команду нижче в поточну папку гілки, щоб злитися з цієї <commit-id>в поточну гілку, --no-commitне робіть нову фіксацію автоматично

git merge --no-commit <commit-id>

git merge --continue можна запустити лише після того, як злиття призвело до конфліктів.

git merge --abort Відмовтеся від поточного процесу вирішення конфлікту та спробуйте відновити стан попереднього об'єднання.

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