Я довольно новичок в использовании git, и я пару раз зарылся в дыру, где один из моих git коммитов заканчивает тем, что модифицировал файлы, которые не отображаются при выполнении git status
, Мне любопытно, если кто-нибудь знает, может ли это привести к тому, что мой локальный репозиторий перейдет в такое состояние, так как мне, кажется, нужно повторно клонировать репозиторий, чтобы исправить мою проблему.
Пример git статуса с одним неустановленным file.
User@User-DESKTOP:~/code/tap$ git status
On branch what-is-programming
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: exampleFile.cs
no changes added to commit (use "git add" and/or "git commit -a")
Затем я добавляю файл
User@User-DESKTOP:~/code/tap$ git add .
warning: LF will be replaced by CRLF in exampleFile.cs
The file will have its original line endings in your working directory
Затем я фиксирую файл
User@User-DESKTOP:~/code/tap$ git commit -m "some message" [what-is-programming bd86d6b] some message
3 files changed, 88 insertions(+), 186 deletions(-)
create mode 100644 someFileIDontExpect.cs
delete mode 100644 anotherFileIDontExpect.cs
Если я выполняю diff для предыдущего коммита, он показывает то, что я ожидаю
User@User-DESKTOP:~/code/tap$ git diff --name-status HEAD~
M exampleFile.cs
То же самое, если я провожу сравнение с мастером
User@User-DESKTOP:~/code/tap$ git diff --name-status master
M exampleFile.cs
Но когда я помещаю sh в github, он показывает, что я создаю someFileIDontExpect.cs и удаляю anotherFileIDontExpect.cs.
Потенциальные места, где я вижу, что я делаю "странные" вещи, которые я иногда делаю git commit -m "WIP"
, а затем git reset --soft HEAD~
, чтобы продолжить работу над коммитом WIP. Я нашел рабочий процесс лучше, чем git stash
, но, возможно, он создает проблемы? Я не совсем уверен, как выяснить, что не работает, поскольку дифференцирование моего коммита выглядит нормально, но как только он попадает в github, он оказывается в очень неожиданном состоянии.
Мы также используем git -lfs но это происходит с исходными файлами, поэтому я не уверен, что это окажет влияние.
Спасибо за любую информацию, которую вы могли бы предоставить! Мне очень любопытно, как я ломаю вещи.
РЕДАКТИРОВАТЬ
@ mkrieger1 Вы правы, что git add .
добавляет все файлы в моем рабочем каталоге, но git status
не показывает любые другие неустановленные файлы. Кроме того, git diff моего коммита не показывает других добавленных или измененных файлов.
@ matt Я не уверен, что следую. git diff --name-status HEAD~
должен перечислить добавленные или измененные файлы из предыдущего коммита, верно? Он показывает только exampleFile.cs
как измененный, хотя мое сообщение о фиксации показало, someFileIDontExpect.cs
создается и anotherFileIDontExpect.cs
удаляется. Я ожидаю, что git diff --name-status master
покажет мне изменения в моей ветке what-is-programming
, которых нет в master
, и они также показывают просто exampleFile.cs
как измененные. Моя локальная копия master
соответствует удаленному, так почему, когда я пу sh, два других файла отображаются в запросе на извлечение? Есть ли что-то, против чего я должен попытаться выяснить, что будет отображаться в моем запросе на получение ответа?