Git: автоматически разрулить конфликты в пользу «theirs» для всех файлов
Мне нужно было все конфликты в файлах по определенной маске разрешить в пользу того, что пришло с сервера.
Файлов таких, по некоторым причинам, было более 5000, и не все удовлетворяли маске (реально нужно было посмотреть вручную около 20 файлов).
Поэтому решил разрулить конфликты в ненужных файлах автоматически.
Сначала сохраним пути ко всем файлам, удовлетворяющим маске, в файл:
1 |
git diff --name-only --diff-filter=U | grep "PreGenerated" > ~/megadiff |
Потом выполним команду
1 |
cat ~/megadiff | awk '{system("git checkout origin/master " $1); print $1}' |
У меня выполнение заняло примерно час.
Полезные ссылки:
http://stackoverflow.com/questions/3065650/whats-the-simplest-way-to-git-a-list-of-conflicted-files,
http://stackoverflow.com/questions/914939/simple-tool-to-accept-theirs-or-accept-mine-on-a-whole-file-using-git,
http://stackoverflow.com/questions/10083506/the-command-find-inside-awk-does-not-work
UPD:
Нашёл (http://stackoverflow.com/a/2073854/801426) другой способ:
git checkout —ours . # checkout our local version of all files
git add -u # mark all conflicted files as merged
git commit -m ‘merge’ # commit the merge
По ссылке более подробное описание, что для чего.
Similar Posts
LEAVE A COMMENT
Для отправки комментария вам необходимо авторизоваться.