2015-11-24 5 views
1

После клонирования репозитория я не могу сбросить состояние этого хранилища в удаленную ветку.git: перезагрузка на удаленную ветвь

$ git clone <repo> 
$ git reset --hard <upstream branch> 
fatal: ambiguous argument '<upstream branch>': unknown revision or path not in the working tree. 
Use '--' to separate paths from revisions, like this: 
'git <command> [<revision>...] -- [<file>...] 

Что прекрасно работает либо префиксов с origin

$ git reset --hard origin/<upstream branch> 

или сделать проверку, прежде чем

$ git checkout <upstream branch> 
$ git reset --hard <upstream branch> 

Вопросы:

  1. Какие дополнительные сведения или изменения состояния Имеет ли контрольный список d предоставлять локальный репозиторий git, чтобы он в конечном итоге мог сбросить свое состояние?
  2. Есть ли команда (например, проверка) Я могу запустить до команды сброса, которая не является специфичной для ветви?
+0

Просто убедитесь, что вы написали имя настоящей ветви, а не '' ''verbatim? – kostix

+0

Также обратите внимание, что вы не можете «сбросить состояние репозитория» в определенную ветку: репозиторий связывает все ветви репозитория, который был клонирован. 'git reset' может использоваться для сброса состояния * ветви * (а также индекса и дерева работ, если задано, или только индекс и дерево работы или только индекс), но не репозиторий в целом , Рассмотрите возможность чтения [this] (https://git-scm.com/blog/2011/07/11/reset.html). – kostix

ответ

0

Что вы подразумеваете под номером "Сбросить состояние хранилища в удаленной ветке"?

Если вы хотите местное отделение, равное удаленной ветви просто использовать ** мерзавец фотографии *:

git checkout -b local_branch_name origin/remote_branch_name 

Если у вас есть грязное рабочее пространство, и вы хотите, чтобы избавиться от любого добавленного/модифицированного файла, можно ввести:

git clean -f 
git checkout -f -b local_branch_name origin/remote_branch_name 
+0

Пример может быть очень простым. Представьте, что рабочее пространство было загрязнено перед командой сброса. – user2124712

+0

Затем проверьте мой новый ответ. – Claudio

2

Git не может найти ссылку на ветку с именем upstream_branch в вашей свежей местной репо, так как он не существует. Но ссылка для origin/upstream_branch действительно существует. Запустите git branch --all, и вы увидите полный список ветвей в вашем репозитории, как локальном, так и удаленном.

Во втором рабочем сценарии при запуске git checkout upstream_branch вы создали локальную ветвь с именем upstream_branch, настроенную для отслеживания удаленной ветви origin/upstream_branch. Вот почему работает следующая команда git reset.

Смежные вопросы