Git diff cached ничего не делает



Вот где я нахожусь:




  1. создал новое РЕПО на GitHub

  2. инициализировано (git add .) мой рабочий каталог локально на моем ПК

  3. committed (git commit-m) все изменения в stage

  4. внес еще одно изменение, добавив новое .png файл

  5. сделал еще один git commit-m

  6. Теперь я хочу увидеть список всех промежуточных файлов, которые будут отправлены, прежде чем я действительно отправлю их в первый раз (или действительно в любое время) в удаленное хранилище (https//.../../). Так я и предполагал там было бы 2 фиксации, полные изменений, чтобы показать для


Если я попробовал commit again (#3), он показывает nothing to commit, working directory clean. Так что я, должно быть, совершил успешно в прошлый раз, я предполагаю, почему он говорит это.



Когда я делаю git status, я получаю nothing to commit, working directory clean



Но когда я пытаюсь набрать git diff --cached --name-only или git diff --staged в терминале в OS X, это ничего не дает. Я просто получаю командную строку после выполнения этой команды снова.

Я что-то упустил? Я искал материал на git diff, но я, должно быть, слеп.

665   2  

2 ответов:

Запуск git diff --cached покажет вам разницу между репозиторием и индексом (местом, где файлы размещаются git add перед их фиксацией в репозитории). Он не просматривает файлы в вашем рабочем каталоге и не сравнивает различия между ревизиями в репозитории.

Если вы хотите увидеть, чем ваш локальный репозиторий отличается от вышестоящего репозитория, сначала убедитесь, что ваш локальный кэш удаленного репозитория обновлен:

git remote update

А затем сравните вашу локальную ветвь с соответствующей ветвью в удаленном репозитории:

git diff --name-only mybranch origin/mybranch

..предположим, что ваш пульт дистанционного управления называется origin, что, вероятно, так и есть.

Обновить

Если вы нажимаете на пустой удаленный репозиторий, то ответ на вопрос "какие файлы будут нажиматься?"есть" все они", и бежать не от чего.

Вы можете запустить git ls-files, чтобы просмотреть список всех файлов в репозитории.

В моем предыдущем примере mybranch будет имя ветви, например master или bug/1234 или this-is-a-nifty-feature, и пример предполагает, что вы перемещаете локальную ветвь в ветвь с тем же именем в удаленном репозитории.

Обновление 2

Вы спросили:

Моя удаленная ветвь-это url, так что же такое origin...uri/[имя РЕПО]? так происхождение-это uri? И что я буду называть именем моего местного жителя филиал?

Репозиторий git может быть связан с одним или несколькими удаленными репозиториями, называется"пульты". Если вы клонируете удаленный репозиторий:

$ git clone [email protected]:larsks/sandbox.git

Вы получите удаленный вызов origin, ссылающийся на этот репозиторий:

$ cd sandbox
$ git remote -v
origin  [email protected]:larsks/sandbox.git (fetch)
origin  [email protected]:larsks/sandbox.git (push)

Ваша локальная ветвь изначально называется master, поэтому ваш первоначальный толчок будет выглядеть следующим образом:

$ git push origin master

При этом git попросит переместить вашу локальную ветвь master в ветвь master удаленного репозитория, называемого origin.

Но вы можете создавать новые ветви, используя команды "git checkout-b" или "git branch". Есть там много документации, которая, вероятно, обеспечит лучший обзор, чем я могу в этом ответе. Я бы начал с книги Git.

Поскольку изображение стоит 1000 слов, и я не хочу заново изобретать колесо, позвольте мне связать одну из иллюстраций https://git-scm.com книга, показывающая жизненный цикл файла в git и показывающая роль кэша. Я признаю, что есть пара вещей, которые мне не нравятся в этой картине, но она хорошо послужит этой цели.

Введите описание изображения здесь

Если вы сделали некоторые изменения и находитесь в середине этапа ("сленг" для выражения "добавление в кэш") некоторые из них они с git add и более детализированными git add -p, то команды git diff и git diff --cached являются способами увидеть, что уже было добавлено в кэш и что еще можно добавить. Под добавлением здесь я подразумеваю git add - мудрый, поэтому добавление неотслеживаемого файла или добавление модификации.

  • git diff: показывает модификации, которые вы можете выполнить с git add. Обратите внимание, что это относится только к стрелке "stage the file", она не содержит список неотслеживаемых файлов.
  • git diff --cached: показывает только разницу между вещи уже инсценированы и предыдущий коммит.

В вашем случае, git diff --cached ничего не показывает, потому что вы уже совершили все, что было в вашей промежуточной зоне, и ничего не добавили с тех пор.

Причина, по которой опция называется --cached, заключается в том, что промежуточная область git изначально называлась cache. Вы также столкнетесь с термином index.

Ответ @ larsks правильный, я просто хотел дать эту альтернативную картину в ответ на комментарии, которые последовал его ответ.

Comments

    Ничего не найдено.