git: 2 разработчика работали над веткой master :( - PullRequest
1 голос
/ 24 апреля 2011

Ну, я не следовал лучшим методам, и теперь я застрял, не зная, что именно делать.

Я работал в основной ветке, и другой разработчик сделал то же самое. Он выдвинул свои изменения в происхождение / мастер. Я не толкнул свой, а просто сделал пару коммитов в местном. В моей рабочей директории больше не ведется разработка. Как я могу это почистить?

Достаточно ли сделать выборку на моей стороне, чтобы сделать последний модификатор, сделанный на origin / master, не испортив все это?

Ответы [ 3 ]

4 голосов
/ 24 апреля 2011

Вы должны быть в состоянии просто сделать git pull из источника.Это объединит новый материал с вашей местной веткой.После этого вы также можете отправить свои локальные изменения в источник.Если есть какие-либо конфликты, git предупредит вас об этом и пометит их, чтобы вы могли разрешить их вручную.Не нужно беспокоиться, потому что это именно то, для чего создан git и который превосходен.

2 голосов
/ 24 апреля 2011

Если вы запустите git fetch origin, это обновит origin/master и все остальные ветви удаленного отслеживания. (Они по сути как кеши состояния тех веток на origin.)

Теперь, если вы просто сделаете git merge origin/master, вы сможете сделать git push origin master, поскольку теперь ваша история master будет включать историю master с origin.

Если вы беспокоитесь о сохранении линейной истории (которой многие люди кажутся), вы должны сделать git rebase origin/master перед тем, как нажать.

В качестве (приблизительных) ярлыков для выполнения git fetch origin, а затем git merge origin/master или git rebase origin/master вы можете сделать:

 git pull origin master

... или:

 git pull --rebase origin master

... но лично я думаю, что яснее делать выборку и слияние / ребазирование отдельно.

1 голос
/ 24 апреля 2011

Переместите ваши изменения поверх нового мастера, затем нажмите

git rebase origin/master
git push origin

Конечно, если есть какие-либо конфликты слияния, вам придется их разрешать (после разрешения git rebase --continue, но инструментрасскажет вам, как это сделать, когда это произойдет).

Если вы предпочитаете, вы можете объединить ветви (это все еще ваша ветка, даже если вы когда-либо клонировали ее из master):

git merge origin/master
git push origin

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

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...