Git вину не показуючи історії


88

Коли я запускаю git вину у файлі (за допомогою msysgit), я завжди отримую такий вид роздруківки:

00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   1) package co
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   2) {
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   3)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   4)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   5)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   6)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   7)      impor

тобто він відображає всі рядки як Ще не здійснені.

Я спробував це на багатьох файлах, у яких багато комітів - завжди однакові результати. Я також намагався використовувати відносний / повний шлях, але, схоже, це не має значення.

Коли я намагаюся використати звинувачення TortoiseGit, він завжди відображає кожен рядок як останній коміт при першому коміті:

текст заміщення

навіть думав, як я вже сказав, в історії цих файлів насправді десятки комітів ..

Ідеї?

Редагувати - Докладніше

  • Вина Git чудово працює на GitHub, де розміщено це репо.
  • Це також прекрасно працює, якщо я клоную його на машину Linux і звинувачую там
  • Здається, що лише на msysgit це не працює

Для мене ця проблема виникла в результаті використання символічно зв'язаного шляху замість шляху, визначеного сховищем, тому він вважав, що файл абсолютно новий.
Kzqai

Примітка: Починаючи з git 2.0.1 (25 червня 2014 р.), Git вин повинен припинити повідомляти про всі ці рядки "Ще не здійснено". Дивіться мою відповідь нижче
VonC

У списку розсилки: git.661346.n2.nabble.com/... Також трапляється в Linux.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Це також впливає на WSL, тому я додав тег. Сподіваюся, це нормально.
mikemaccana

Відповіді:


127

git blame file.txtзвинувачує версію file.txt у вашій робочій копії. Якщо у файлі file.txt у репозиторії є Windows-newlines (CRLF), а у вас є core.autocrlf = true, тоді кожен рядок file.txt вважатиметься іншим і буде повідомлятися git blameяк ще не здійснене.

Причина git blame <my_branch>(чи навіть краще git blame HEAD, яка працює незалежно від того, в якій гілці ви працюєте) полягає в тому, що вона не звинувачує версію робочої копії, тому немає потенціалу для рядків, які ще не були зафіксовані.


118
git blame -wігнорує пробіли, тому ви все одно можете звинуватити робочу копію за бажанням
Кайл Хейронімус

13
Git вина -w має бути окремою та прийнятою відповіддю;). Прийнята відповідь без коментаря була для мене марною.
Гійом Перро,

55

Знайшли рішення - дуже дивне.

Якщо я запустив це:

git blame file.txt

Історія порушена, як розміщено вище.

Якщо я зроблю це замість цього:

git blame my_branch file.txt

Це працює!

Це дуже дивно, оскільки для використання AFAICS не потрібна назва гілки:

$ git blame
usage: git blame [options] [rev-opts] [rev] [--] file

7
Це працює для мене, дякую за розміщення. Ви повинні позначити це як відповідь IMO.
вс

Це працює для мене в msysgit, але ім'я файлу чутливе до регістру. Тож я можу писати, git blame mybranch cmakelists.txtі це не вдасться; але якщо я напишу, git blame mybranch CMakeLists.txtце спрацює.
петля

Я згоден, wes; доки я не вказав гілку, вина не показувала жодної історії, і це суперечить документації.
josephdpurcell

OMG, звинувачення так зламане.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

8

Починаючи з git 2.0.1 (25 червня 2014 р.), Git винна припинити повідомляти про всі ці рядки "Ще не здійснено".

Див. Коміт 4d4813a (26 квітня 2014 р.) Брайана М. Карлсон ( bk2204) .
(Об’єднано Junio ​​C Hamano - gitster- у комітеті e934c67 , 06 червня 2014 р.)

blame: правильно обробляти файли незалежно від autocrlf

Якщо файл містив CRLFзакінчення рядків у сховищі з core.autocrlf=input, тоді звинувачуйте завжди позначені рядки як " Not Committed Yet", навіть якщо вони не модифіковані.
Не намагайтеся перетворити закінчення рядків під час створення підробленого коміту, щоб звинувачення працювало коректно, незалежно від autocrlfналаштування.


8
У мене все ще є проблема у git
v2.1.3

У мене проблема з git версії 2.16.1.windows.1
Radon8472,

@ Radon8472 Чи можете ви додати нове запитання, що ілюструє проблему, з вашим git config -lрезультатом (і посиланням на цю відповідь): це дозволить мені та іншим спробувати перевірити, чи проблема не зникає.
VonC

1

Ще одна можливість: помилка назви файлу з урахуванням регістру

У мене була та сама проблема з git винним файлом.txt, а потім зрозуміла, що я зробила друкарську помилку з іменем файлу з файлом file.txt

Змінив його на File.txt (наприклад), і я отримав очікувані результати без необхідності вказувати my_branch: git виправити File.txt

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.