Я знайшов інші відповіді незадовільними і розчарувався, шукаючи відповідь. Рішення цього питання я нарешті знайшов тут: https://stackoverflow.com/a/11593308/1351182
Якщо ви виконаєте ці команди, ви створите новий коміт, який по суті бере найновіший коміт branchToMergeFrom
і дозволяє застосувати патч поверх нього, що, на мою думку, є як додатковий коміт зверху.
git checkout branchToMergeTo
git checkout --patch branchToMergeFrom [file]
Потім вам буде запропоновано (файл-за-файлом, якщо ви не вказали file
), які саме "шматки" ви хочете об’єднати. Таким чином, він проводить вас через кожну частину того, що було б автоматичним процесом злиття, і замість цього просить про ручний арбітраж, які біти та фрагменти ви хочете прийняти від mergefrom
гілки. Ось приклад того, як це виглядало в моєму проекті:
@@ -249,7 +251,8 @@ def draw_everything():
draw_bg()
draw_balls(ax)
- plt.show(block=False)
+ if show:
+ plt.show(block=False)
def advance(ms, accel_fun, collision_matrix_fun):
global balls
(3/6) Apply this hunk to index and worktree [y,n,q,a,d,K,j,J,g,/,e,?]?
Після набору тексту y
і <Enter>
, мені подарували наступний шматок (4/6)
для цього файлу. Ця підказка внизу дозволяє вам просто прийняти злиття `` шматком '' y
, відхилити його n
або навіть зайти та відредагувати його вручну. Ось варіанти:
y - apply this hunk to index and worktree
n - do not apply this hunk to index and worktree
q - quit; do not apply this hunk or any of the remaining ones
a - apply this hunk and all later hunks in the file
d - do not apply this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help
Я хотів увійти та вручну відредагувати один шматок, оскільки не хотів приймати або відхиляти злиття точно так, як воно було поставлене. Тож я вибрав e
і мені дали файл для редагування. Мені було приємно, коли я помітив, що внизу є навіть інструкції про те, як правильно редагувати кусень. Ви навіть можете розділити куски на менші за допомогою s
опції, як зазначено вище.
Я б рекомендував цей процес, якщо те, що ви хочете, - це об’єднання вручну, де ви як і раніше використовуєте автоматичний процес, наскільки це можливо. Різниця полягає в тому, що ви можете спостерігати за кожним "об'єднанням" об'єднань і редагувати їх як завгодно. Сподіваюся, це допоможе майбутнім читачам.
Після цього процесу, ви , ймовірно , хочете працювати git checkout branchToMergeTo && git merge branchToMergeFrom
для того , щоб формально злитися історії branchToMergeFrom
в branchToMergeTo
.