Git. Синхронизация локальных файлов с новым коммитом после мягкого сброса и коммита - PullRequest
0 голосов
/ 13 марта 2020

Допустим, у нас есть три коммита и HEAD, указывающие на коммит C.

A-B-(C<--HEAD)

Я делаю мягкий сброс на B:

$ git reset --soft B

Теперь HEAD указывает на коммит B и фиксация C удаляется

A-(B<--HEAD)

И индекс все еще совпадает C. Поэтому мы решили повторить.

$ git commit -m "C again"
$ git log
C'
B
A

Мой вопрос таков, так как мы сделали программный сброс, локальные файлы не обновляются. Какая команда git используется для 'синхронизации c' локальных файлов с новым коммитом C '? У меня есть одна идея: git checkout C'.

Другой вопрос - после мягкого сброса и фиксации, на что указывает HEAD?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Когда вы запускаете git reset --soft somewhere, тогда HEAD указывает на somewhere. Если вы работали с веткой, то ветка будет указывать на это somewhere (а HEAD указывает на ветку). Если вы работали над отдельным HEAD, тогда HEAD указывает на ревизию предоставленной вами somewhere.

Теперь о файлах .... учитывая, что вы создали ревизию сразу после выполнения git reset --soft (верно?), тогда файлы C 'и C абсолютно одинаковы. Проверьте с git diff C.

0 голосов
/ 13 марта 2020

Скажем, после программного сброса мы меняем содержимое файла (скажем, файл f).

Затем, если мы фиксируем C 'Я проверил, что содержимое файла f не меняется с этим коммитом.

Даже если мы осуществляем извлечение HEAD, содержимое файла f не изменяется.

Единственное, что изменяет содержимое файла f на содержимое HEAD (ie. C '), это если делаем хард ресет: git reset --hard HEAD.

...