2013-03-28 3 views
4

Я пытаюсь использовать cherry-pick commit в git, который добавляет кучу файлов, но также модифицирует файл, который еще не существует в моей ветке.git cherry-pick merge deleting file

Существует конфликт, где файлы, чтобы добавить все поставил, и файл, который был изменен в фиксации, но пока не существует в отрасли не поставлена ​​и и указана как:

deleted by us: app/changed_file.rb 

Если я просто фиксирую поставленные файлы, это вызовет проблемы, когда changed_file.rb в конечном итоге будет объединен в ветку?

ответ

3

https://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html

Cherry-выбор создает новый совершить, так что если вы опускаете файл, который не существует в вашей отрасли, но существует в отрасли, которую вы собираетесь, чтобы слиться в конце концов ничего не произойдет.

mkdir test && cd test && git init && touch foo.txt 
git add foo.txt && git commit -m "Init repo" 
git branch test && git checkout test && vi foo.txt 
git add foo.txt && git commit -m "Changed foo on branch test" 
git checkout master && touch bar.txt 
git add bar.txt && git commit -m "Create bar.txt" 
vi bar.txt 
touch baz.txt && git add . && git commit -m "Will be cherry picked" 
git checkout test && git cherry-pick bfd1b58 
git rm bar.txt && git commit 
git checkout master && git merge test 

И в результате ls: bar.txt baz.txt foo.txt

1

Вы можете просто удалить этот файл с фиксацией вы вишневый сбором, если это не требуется ...

мерзавца погонных имя_файла

git commit

- убедитесь, что ваше сообщение фиксации содержит Change ID: строка как последний абзац

мерзавец толчок происхождение ГОЛОВА: ссылки/для/branch_name

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