LINUX.ORG.RU

Откинуть unstaged, сохранить staged изменения в одном файле

 ,


0

1

Гипотетическая ситуация: мастерю я красивый комит из набора изменненных unstaged файлов с помощью add -i. В файле foo.txt я заметил, что часть изменений не нужна. Естественно, я добавил нужные изменения в stage с помощью add -i. Теперь хочу «стереть» ненужные изменения.

Вот маленькая иллюстрация ситуации:

$ cat > foo.txt <<END
1. wanted
2. unwanted
END

$ git add -i foo.txt

git diff --staged foo.txt
diff --git a/foo.txt b/foo.txt
index e69de29..6a5ed99 100644
--- a/foo.txt
+++ b/foo.txt
@@ -0,0 +1 @@
+1. wanted

$ git diff foo.txt
diff --git a/foo.txt b/foo.txt
index 6a5ed99..9e6d867 100644
--- a/foo.txt
+++ b/foo.txt
@@ -1 +1,2 @@
 1. wanted
+2. unwanted

А вопрос такой: как мне стереть unstaged изменения в foo.txt, чтобы:

  1. не трогать других измененных unstaged файлов
  2. сохранить staged изменения в foo.txt (и вообще весь stage)

?

Если правильно понял, то так:

git checkout foo.txt
По умолчанию checkout берёт файлы из текущего индекса (staged).

xaizek ★★★★★
()
Последнее исправление: xaizek (всего исправлений: 2)
Ответ на: комментарий от intelfx

Не, это немного то: diff я итак показал. Я хотел git checkout [PATHS...], просто не знал что так можно (всегда использовал git checkout tree-ish [PATHS...]).

KennyMinigun ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.