Я, вероятно, что-то пропустил. Просьба указать на мою ошибку.Невозможно переключить ветви. Что я делаю не так?
У меня есть репозиторий. Строка называется master
(очевидно) и содержит несколько файлов. Я создал ветку с именем dev-17
и добавил еще один файл (называемый file17
).
Теперь на системе Debian на базе я:
$ git fetch origin
$ git reset --hard origin/master
HEAD is now at 13e51c7 20150418.2030
$ git clean -f -d
$ git status
# On branch master
nothing to commit (working directory clean)
$
Это выглядит хорошо. И ls
показывает все файлы, которые я ожидаю. Тогда я:
$ git fetch origin
$ git reset --hard origin/dev-17
HEAD is now at 145e638 add file17
$ git clean -f -d
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
$
Ведение ls
показывает, что добавленная file17
есть на самом деле. Итак, видимо, я нахожусь на ветке dev-17
. Но почему git status
говорят, что я нахожусь на master
?
Теперь для реальной проблемы, в то время как на dev-17
ветви (EDIT: оказывается, что выше на самом деле не взять меня к DEV-17 филиала, так что это утверждение неверно), это происходит, когда я хочу увидеть если file17
изменилось:
$ git --no-pager diff --name-only dev-17..origin/dev-17 -- ./file17
fatal: bad revision 'dev-17..origin/dev-17'
$
Предложения очень приветствуются.
[ 'мерзавец reset'] (http://git-scm.com/docs/git-reset) ** не ** переключает ветви. ['git checkout'] (http://git-scm.com/docs/git-checkout) - это команда, которую вы ищете. – axiac
Почему вы используете 'git reset --hard', здесь? Это, вероятно, * не * то, что вы хотите сделать ... – Jubobs
@Jubobs: Я кодирую другую систему и проверяю изменения на этом. Я периодически использую 'git reset --hard' для поддержания синхронизации с удаленным кодом. Я думаю, что я принял эту команду, чтобы (также) иметь возможность переключаться между ветвями. – Mausy5043