2015-07-29 3 views
2

Иногда, когда я делал некоторые изменения (git diff), я хочу, чтобы часть из них (только определенные файлы) добавляла к более старой фиксации.Добавить изменения в любое совершение

Что это самый простой способ сделать это?

+0

Возможный дубликат [Как git-cherry-pick только изменения в определенных файлах?] (Http://stackoverflow.com/questions/5717026/how-to-git-cherry-pick-only-changes-to- определенные файлы) – isherwood

+0

Попробуйте 'git add -i' (добавить git help) – Kenney

ответ

2

Вы можете добавить изменения, которые вы хотели бы объединить в более старой фиксации как этот

git add [path] или git add -p

затем создать Fixup совершить с хэш коммита вы хотели бы перенести эти изменения

пример:

git commit --fixup [commit hash]

К м Ерге эти 2 фиксаций в 1 вы, наконец, нужно будет сделать интерактивная Rebase

git rebase -i origin/[branch name] --autosquash

изделия что вы должны заставить толчок (с осторожностью) после интерактивной Rebase

git push -f

+1

В моей версии git нет --fixup для команды commit. Я создал несколько коммитов и запустил git rebase -i HEAD ~ . Затем я изменил «pick» на «s» для некоторых коммитов, и у меня есть порядок этих фиксаций. – Marcin

1

Когда ты скажем, «добавить к более старой фиксации», я предполагаю, что вы хотите изменить предыдущую фиксацию:

git add ...   # add as you see fit, maybe with -p 
git commit --amend 

Это приведет к добавлению изменений в предыдущую фиксацию. Помните, что это изменяет историю, поэтому, если вы нажали эту фиксацию на удаленный, это может быть не очень хорошая идея (см. How do I push amended commit to the remote Git repository?).

Если вы хотите изменить другую фиксацию, чем последнюю, вам нужно будет либо использовать --fixup, либо зафиксировать ее, а затем использовать rebase --interactive, чтобы выложить ее в нужную фиксацию. Но опять же, имейте в виду, что вы переписываете историю и можете столкнуться не только с проблемами, а с конфликтами с последующими коммитами.

Смежные вопросы