Надані відповіді на даний момент не є ідеальними, оскільки вони потребують багато непотрібної роботи над вирішенням конфліктів злиття, або вони роблять занадто багато припущень, які часто хибні. Ось як це зробити ідеально. Посилання на мій власний сайт.
У вас є незаконні зміни щодо того, my_branchщо ви хочете здійснити master, не вчинивши жодних змін my_branch.
Приклад
git merge master
git stash -u
git checkout master
git stash apply
git reset
git add example.js
git commit
git checkout .
git clean -f -d
git checkout my_branch
git merge master
git stash pop
Пояснення
Почніть з об'єднання masterу свою філію, оскільки вам доведеться це зробити зрештою, і зараз найкращий час для вирішення будь-яких конфліктів.
Цей -uпараметр (ака --include-untracked) git stash -uзапобігає втраті файлів, що не відслідковуються, коли пізніше це робиться git clean -f -dвсередині master.
Після git checkout masterтого, як важливо, ви НЕ будете робити git stash pop, тому що вам буде потрібна ця скринька пізніше. Якщо ви поп тайник , створений в my_branchа потім зробити git stashв master, ви будете викликати непотрібні конфлікти злиття , коли ви застосуєте цей тайник в my_branch.
git resetнестабільність все, що є результатом git stash apply. Наприклад, файли, які були змінені в сховці, але не існують в стадії masterпостановки як конфлікти "видалених нами".
git checkout .і git clean -f -dвідкиньте все, що не вчинено: усі зміни відслідковуваних файлів, а також усіх непотренованих файлів та каталогів. Вони вже зберігаються в сховці, і якщо їх не залишилося, це masterпризведе до зайвих конфліктів злиття при переході назад до my_branch.
Останній git stash popбазуватиметься на оригіналі my_branch, і тому не спричинятиме конфліктів злиття. Однак якщо у вашому сховищі містяться відслідковувані файли, які ви зобов’язалися засвоїти, git поскаржиться, що це "Не вдалося відновити відслідковувані файли із сховища". Щоб вирішити цей конфлікт, видалити ці файли з вашого робочого дерева, а потім git stash pop, git add .і git reset.