Что такое команда Git Restore?В чем разница между Git Restore и Git Reset? - PullRequest
1 голос
/ 19 сентября 2019

Когда я хочу Unstaging Staged File, все мои учебники Git всегда показывают что-то вроде этого:

$ git add *
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    renamed:    README.md -> README
    modified:   CONTRIBUTING.md

Удивительный совет показывает, что мы используем команду Git Reset для Unstaging Staged File

Но вместо этого в моем терминале:

git status
On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
    renamed:    cat.js -> catcat.js
    renamed:    tolendo.gogo -> tolendo.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    readme (copy).md
    tolendo (copy).txt
    zing (copy).html

Не "(используйте" git reset HEAD ... "для удаления)" , но (use "git restore --staged ... "to unstage)

Я понятия не имею о новой команде восстановления и пытался отыскать разницу между сбросом и восстановлением в Google, но, похоже, мне ничего не подходит.

Можете ли вы, ребята, помочь мне?

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

1 Ответ

1 голос
/ 19 сентября 2019

Я представил git restore (который все еще помечен как «экспериментальный») в « Как сбросить все файлы из рабочего каталога, но не из промежуточной области? », с недавним Git 2.23 (август2019).

Помогает разделить git checkout на две команды:

  • одна для файлов (git restore), которая может охватывать git reset дела.
  • один для веток (git switch, как видно из « Confused git checkout »), который имеет дело только с ветками, а не с файлами.

Когда устанавливает, восстанавливает и восстанавливает состояния:

Существует три команды с похожими именами: git reset, git restore и git revert.

  • git-revert о создании нового коммита, который отменяет изменения, сделанные другими коммитами.
  • git-restore о восстановлении файлов в рабочем дереве из индекса или другого коммита.
    Эта команда не обновляет вашу ветку.
    Команду также можно использовать для восстановления файлов в индексе из другого коммита.
  • git-reset - это обновление вашей ветки, перемещение подсказки для добавления или удаления коммитов из ветки.Эта операция изменяет историю фиксации.
    git reset также можно использовать для восстановления индекса, перекрывая git restore.

Итак:

Чтобы восстановить файл в индексе, чтобы он соответствовал версии в HEAD (это аналогично использованию git-reset)

git restore --staged hello.c

, или вы можете восстановить и индекс, и рабочее дерево (это так же, какиспользуя git-checkout)

git restore --source=HEAD --staged --worktree hello.c

или краткую форму, которая более практична, но менее читабельна:

git restore -s@ -SW hello.c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...