Как взять версию в удаленной ветке и забыть изменения, которые я внес в мой рабочий каталог - PullRequest
3 голосов
/ 01 октября 2009

Я внес изменения в свой рабочий каталог и сделал 'git commit'

А потом я делаю 'git pull'. Git пытается получить изменения в ветке удаленного отслеживания и автоматически объединить их для меня. Но есть некоторые файлы с конфликтом.

Итак, как я могу просто взять версию в удаленной ветке и забыть изменения, внесенные в определенный файл?

Я пытаюсь сделать 'git checkout - chrome / browser / browser.cc', но мне сказали, что я нахожусь в середине слияния, и он не позволит мне это сделать.

# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       unmerged:   chrome/browser/browser.cc
#       unmerged:   chrome/renderer/render_view.cc
#       unmerged:   chrome/test/automation/automation_proxy_uitest.cc

Спасибо.

Ответы [ 3 ]

5 голосов
/ 01 октября 2009

Кажется, что git reset --hard <remote_commit> достиг бы вашей цели. Это отбросит ваши локальные коммиты и укажет HEAD текущей ветки на удаленный коммит.

Кроме того, вы пробовали git checkout -f? Это может убедить его сделать то, что вы просили.

1 голос
/ 02 октября 2009

Если вы хотите полностью забыть последний сделанный вами коммит, выполните git reset --hard HEAD^, который вернет вашу основную ветвь в предыдущее состояние - вы также можете сделать git log, выбрать коммит, к которому вы хотите вернуться, и сделать git reset --hard <sha1>. Однако, если другие люди вытащили коммиты, которые вы сейчас хотите игнорировать, безопаснее выполнить слияние со стратегией наша , например. git checkout -b temp --track origin/master, git merge --strategy=ours master и git push. Это сохранит историю внесенных вами изменений, но удалит их из результирующего дерева.

Если это всего лишь несколько файлов, вы, конечно, можете просто выбрать исправление конфликта вручную, выбрав версии из origin/master. Любой приличный инструмент слияния должен учитывать это.

0 голосов
/ 01 октября 2009

Вы можете

git reset --hard HEAD

чтобы отменить ваши локальные изменения, затем просто git pull ваши удаленные изменения в (теперь) чистый локальный репозиторий.

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