2016-09-29 3 views
0

У меня есть ветка с именем master, и я хочу сбросить все изменений, сделанных на этой ветке. Необходимо переместить все фиксации из ветви с именем origin/d в master. Так это то, что я сделал (на ветке master):Конфликты после сброса git --hard

git fetch -all 
git reset --hard origin/d 
git clean -f -d 
git push origin master --force 

Я получил следующее сообщение:

remote: error: denying non-fast-forward refs/heads/master (you should pull first) 

Но я не хочу, чтобы тянуть, я просто хочу переместить все коммиты ответвление d на ветку master (игнорирование всех локальных/нелокальных коммитов на ветке master).

Когда я положил git pull У меня много конфликтов, которые я не хочу решать. Может ли кто-нибудь помочь мне и рассказать мне, что является самым простым способом сделать это?

+0

Эта ошибка, кажется, указывает, что сервер запрещая ваш '--force' аргумент. Что вы используете на сервере? Это самообслуживание? –

+0

Филиал 'm' является именно ветвью' master', так что это случай ошибки. – user2921643

+0

На каком сервере вы работаете? У вас есть доступ к админу? –

ответ

3

Сообщение об ошибке указывает, что (1) ваш сервер запрещает принудительные обновления (аргумент --force) и (2) по какой-либо причине Git хочет нажать m на master.

Для временного вокруг второго вопроса, то вы можете сделать:

git push origin m:refs/heads/m --force-with-lease 

(Это лучше использовать --force-with-lease вместо --force, потому что прежнее будет перезаписывать только если дистанционное отслеживание ветвь вверх-to дата. Если кто-то еще случились нажать фиксации со времени последнего fetch ред, то --force перезаписывает тот, в результате чего работа будет потеряна.)

Однако, если ваш сервер запрещая вынужден обновление, то он, вероятно, отклонить эту команду как Что ж. Если у вас есть доступ администратора к вашему серверу, тогда один из вариантов - это изменить. В противном случае, чтобы обойти это, вы должны быть в состоянии удалить ветку, а затем нажмите:

git push origin --delete m 
git push origin m:refs/heads/m 

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

+0

Ветвь m является мастером точно. Когда я использую git pull, git объединит некоторые изменения из старой ветви m, которую я предположил, и возникнут некоторые конфликты и некоторые измененные файлы, которые я не хочу. Есть ли возможность просто переместить все коммиты (и не более того) из ветки d в m? как разрешить все конфликты как мои (из d-ветви) и предотвратить изменение других файлов из d-ветки в результате слияния? – user2921643

+0

@ user2921643 Хорошо, это объясняет вторую проблему. Пожалуйста, отредактируйте (// stackoverflow.com/help/editing) эту дополнительную информацию в свой вопрос.Пока вы на нем, ответьте на вопрос, который я задал в своем комментарии к вашему вопросу. –

+0

Изменено 'm'' 'master' – user2921643

1

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

git reset --hard HEAD 
git pull --rebase // fetch and pull together 

и после разрешения конфликтов (если они существуют), вы можете делать отжимания

git push origin master 
Смежные вопросы