2015-06-22 3 views
3

У меня есть ветка A и мастер в git repo.Слить обратно удаленный файл с ветки на мастер

В отделении A я сделал несколько дополнений, удалений. В какой-то момент эти изменения были также объединены в Master, но нам пришлось освободить мастер без этих изменений, поэтому мы удалили файл в master.

Теперь, когда слияние мастера в ветку A, чтобы получить последние изменения, Git явно удаляет файлы, так как они были удалены в master после последних изменений.

Что является самым простым способом сохранить ветвь Изменения в процессе слияния последнего изменения мастера?

+0

Можете ли вы предоставить краткую историю своего репозитория git? Использование простого 'reset' или' checkout' должно сделать трюк, но в зависимости от вашей истории, он должен иметь более удобный способ :) – NiziL

+0

Проверьте это: http://stackoverflow.com/a/16455853/4768218 – axxis

ответ

2

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

$ git checkout master 
$ git merge A # the file is gone 
$ git checkout A -- file.txt 
$ git add file.txt 
$ git commit -m"Reintroduce file.txt, which was deleted for release" 

Я не люблю изменения слияния совершает вручную, а позволить git сделать их , затем исправить потом. Это вызывает меньше удивления.

0

Я бы пошел вперед и объединил мастера в A, а затем вишневый захват, которые были отменены обратно на A. Итак, скажем, вы добавили файлы, которые были добавлены в commit abc123; а на A просто сделайте git cherry-pick abc123. Повторите для всех коммитов, изменения которых были отменены или если они являются непрерывным списком коммитов, вы можете указать диапазон для выбора вишни, например. git cherry-pick 123..xyz.

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