Git коммит добавляет / удаляет файлы, не подготовленные для коммита - PullRequest
1 голос
/ 06 апреля 2020

Я довольно новичок в использовании 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, два других файла отображаются в запросе на извлечение? Есть ли что-то, против чего я должен попытаться выяснить, что будет отображаться в моем запросе на получение ответа?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...