git извлечение не отменяет зафиксированный файл - PullRequest
1 голос
/ 16 апреля 2020

Я отредактировал, добавил и зафиксировал некоторые файлы. Когда я запускаю:

git diff --stat --cached origin/development

, один из файлов не должен был быть изменен, и я хотел бы отменить изменения в этом одном файле.

На основе приведенной ниже диаграммы я запустил:

git checkout file_name

но:

git difftool --cached origin/development

по-прежнему показывает, что файл содержит изменения.

Как отменить изменения в одном файле и почему git checkout не работает?

enter image description here

Ответы [ 3 ]

1 голос
/ 16 апреля 2020

Я думаю, что вы перепутали git diff и git show здесь.

Вы не сделали коммит и не вносили никаких изменений еще

Использование git checkout your-file

Вы еще не сделали коммит, но уже поставили изменения

Используйте git reset HEAD your-file

Вы уже сделал коммит

Убедитесь, что у вас нет ожидающих изменений (ставьте sh их или отмените их), скопируйте ваш коммит ha sh (см. COMMIT_HA SH) затем:

git reset HEAD~1
git checkout your-file
git add your-other-file ...
git commit -c COMMIT_HASH

Примечание: это предполагает, что коммит является вершиной вашей ветви

Если ваш коммит не является вершиной вашей ветви, я бы рекомендовал ознакомиться с интерактивным Перебазируйте, если и только если вы не касаетесь ветки publi c. т.е. не переписывать публикуемую c историю.

1 голос
/ 16 апреля 2020

Как вы упомянули, вы зафиксировали некоторые файлы, и теперь вы хотите отменить удаление этих изменений.

Предполагая, что фиксация является последней, вы можете выполнить следующие команды:

1. git reset --soft HEAD~1

2. git reset HEAD .

Теперь у вас есть все файлы как неотмеченные.

Если вы хотите любой Определить c файл без обработки, после выполнения 1, сделайте так:

  • git reset HEAD <filename>
0 голосов
/ 16 апреля 2020

В вашей команде git checkout отсутствует параметр, в который нужно передать коммит, в который вы хотите вернуть файл, например:

> git log

commit 11111
Date:  today

    File broken

commit 22222
Date:  yesterday

    File working fine

Затем отменить изменения в вашем файле:

git checkout 22222 file_name

И изменения будут отменены на file_name и помещены в область подготовки:

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