2016-12-20 2 views
0

Есть ли способ просмотреть различия между версиями staged и unstaged того же файла?Различия между поэтапными и неустановленными версиями одного и того же файла с использованием difftool

Например:

Changes to be committed: 

    modified: conf/application.conf 

Changes not staged for commit: 
    (use "git add/rm <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: conf/application.conf 

Это происходит, когда я инсценировать изменения, а затем я снова изменить файл, без постановки его.

EDIT

Команда git status -vv не достаточно хорошо, потому что мне нужно использовать команду diff/difftool. Это потому, что на практике слишком много изменений в слишком большом количестве файлов, и прокрутка через них неэффективна. Но diff/difftool позволяет мне указать файл, который меня интересует.

+0

Это тот же файл. – Maroun

+0

@MarounMaroun Да, в этом суть. Git концентрируется на изменениях файла, а не на самом файле. См. Этот вопрос: https://stackoverflow.com/questions/24837841/git-can-a-file-be-both-staged-and-unstaged-for-commit – DrKaoliN

ответ

8

git diff покажет разницу между вашей рабочей областью и индексом. (индекс, где инсценированном файлы живут)

Это может показаться очевидным, потому что мы обычно используем git diff, чтобы увидеть изменения в рабочей области против того, что проверяется. Однако технически git diff показывает рабочее пространство в зависимости от индекса, и если вы не добавили изменений в индекс, тогда индекс соответствует тому, что вы проверили.

  • видеть рабочее пространство против репо: git diff HEAD
  • видеть индекс против РЕПО: git diff --cached
  • видеть рабочее пространство в зависимости от индекса: git diff
+0

Большое спасибо! Это ответ, который я искал. – DrKaoliN

0

Если вы запустите команду git status -vv, вы увидите текстовые изменения файла. См. doc.

+0

Это не отвечает на мой вопрос. – DrKaoliN

+0

Можете ли вы уточнить @DrKaoliN, может быть, я неправильно понял. Запуск этой команды покажет все изменения в conf/application.conf, которые произошли с момента его установки. Разве это не то же самое, что показать разницу между поэтапной и обновленной версией 'conf/application.conf'? –

+0

Ну, эта конкретная команда мне не помогает, потому что мне нужно использовать команду 'diff' или' diffftool', чтобы я мог видеть эти различия именно для указанного файла. Т.е. я могу набрать 'git diff conf/application.conf ', но набрав' git status -vv conf/application.conf', все равно покажут все изменения в консоли. Поскольку на практике у меня никогда не было только одного модифицированного файла, есть, возможно, десятки файлов с десятками модифицированных строк кода и прокрутка на полминуты, чтобы найти то, что мне нужно, неэффективно. Но _технически, ваш ответ верен. – DrKaoliN

Смежные вопросы