Как правильно сделать слияние чужих и своих изменений?

работаем вдвоем над одним проектом, я поработал и хочу закоммитить изменения в репозиторий, перед этим делаю git pull и получаю
error: Your local changes to the following files would be overwritten by merge:
	1.php
	2.php
       3.php
Please, commit your changes or stash them before you can merge.
Aborting

т. е  в этим файлах у меня свои наработки,  и второй прогер уже закинул в репозиторий свои изменения,  вопрос.
Как мне его изменения слить и так чтобы не потерять свои изменения?  Вообщем как мне правильно все сделать и закоммитить
  • Вопрос задан
  • 10044 просмотра
Пригласить эксперта
Ответы на вопрос 4
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
Please, commit your changes or stash them before you can merge.


Что в этой фразе не понятного?

Вариант 1. - Делаете коммит, а котом git pull и оно вам предложит смержить.
Вариант 2. - Делаете git stash (прячет все незакомиченые локальные изменения); затем git pull; затем git stash pop, а дальше мержите.

Вообще есть третий вариант (на будущее) - создаете локально еще одну ветку, в ней работаете, а потом делаете git pull в основной ветке (точнее в той, от которой вы отпочковались) и мержите с ней свою ветку. (опять же, можете сделать stash, затем "отпочковаться", затем слить изменения с репозитория и потом stash pop в свою ветку, а затем мержитесь, когда надо, с той веткой, откуда отпочковались).
Ответ написан
@ashumkin
системный разработчик
хочу закоммитить изменения в репозиторий, перед этим делаю git pull

Вот не надо ничего делать, пока не закоммитил. Git просто таки предназначен, чтобы коммитить часто. Закоммитил - считай, сохранил навсегда, и уже не потеряешь
Ответ написан
@DragorWW
Front-end Developer
Тут у вас есть несколько проблем:
1. команда git pull это на самом деле алиас для git fetch + git merge
работает она так, сначала через git fetch получает новое состояние ветки из origin, а потом передает управление git merge, он в свою очередь если ваша ветка разошлась делает merge, если нет то делает fast forward как следствие могут появиться не нужные комиты вида "Merge branch "test" to "test""

По этому советую вместо git pull делать всегда git fetch, а потом смотреть git status а там уже либо git rebase origin/test либо git pull

2. так же как вам уже сказали выше у вас есть изменения в локальных файлах, в целом в этом нет ничего плохого, их можно либо спрятать через git stash либо сделать комит
Ответ написан
Комментировать
bopoh13
@bopoh13
VBA, Ruby (noob), analytic
Вести совместную разработку в одной ветви - плохой тон.
  1. *git pull --rebase --autostash создаётся ветвь refs/stash.
  2. git status могут появиться файлы modified (changed & indexed) и both modified (conflicted).
  3. git stash drop отбросить ветвь refs/stash. Затем заняться конфликтами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы