Я недавно столкнулся с проблемой, когда мне нужно выбрать несколько файлов, чтобы нажать на удаленные ветви с git. В моем конкретном случае использования существует только один файл, созданный/измененный в каждом отдельном коммите, и мне нужно программно нажать выбранные файлы (в их последнем состоянии). я сделал несколько исследований, и нашел 2 трюков, которые были близки к тому, что мне нужно сделать:Git: как нажимать изменения, сделанные только на определенные файлы?
- я могу использовать вишни выбрать, чтобы забрать некоторые коммиты в новую отрасль и слить эту ветвь в отдаленные мастер.
- Я могу использовать rebase -i для переупорядочения коммитов, я предполагаю, что могу изменить порядок, чтобы коммиты, относящиеся к этим выбранным файлам, были впереди, и я могу просто нажать последнее коммит в этом списке.
Для вишневого забора это немного запутанно. Я могу создать новую ветку без всех грязных коммитов и выбрать файл, который фиксируется в этой ветке. Однако, если файл уже существует в ветке, он всегда вызывает конфликт, который я должен исправить вручную, а не идеально.
Для переустановки -i, из того, что я прочитал, мне нужно перейти к интерактивному редактору, где мне нужно вручную переупорядочить коммиты, и после этого я могу сделать начало генерации git, чтобы применить все до фиксации SHA (который переупорядочен). Не идеально, так как я должен выполнять ручную работу.
В целом я думаю, что перебаза приблизилась к тому, что мне нужно, но я не мог найти простой способ сделать это программно. Может ли кто-нибудь придумать какие-либо операции по аналогии с гитами, которые могут выполнить мою задачу?
Позвольте мне понять это - есть куча коммитов на одной ветке, которую нужно применить к другому, и в каждом коммите есть только один файл, который был изменен. Так что, может быть, commit 1 изменяет файл A, commit 2 изменяет файл B и т. Д.? –
@AdamS Да, что вы сказали правильно, но может быть куча коммитов, изменяющих один и тот же файл. Предположим, что у меня есть модифицированный файл A, C2, C3, C4 и C2, все остальные измененные файлы B. Теперь я хочу нажать модификацию файла B (а именно C1, C3, C4). Я знаю, что rebate -i может это сделать, но, пожалуйста, обратитесь к моему основному сообщению (нет программного пути). –