Как удалить файл из локального репозитория git и локальной файловой системы, но не из удаленного репозитория? - PullRequest
0 голосов
/ 10 июля 2020

Я пытался удалить файл из своей локальной файловой системы и локального git репозитория.

Я использую git rm --cached <file name>

Но всякий раз, когда я работаю с другим файлом и pu sh the changes git также удаляет локально удаленный файл из моего удаленного репозитория. Я хочу, чтобы файл остался на моем GitHub.

Я был бы очень признателен за помощь.

Ответы [ 3 ]

1 голос
/ 11 июля 2020
git update-index --skip-worktree <file name>

Это немного хакерский метод, но он позволяет вам редактировать (или удалять) файл, не показывая, что он изменен.

Вы можете легко вернуть это позже, когда это необходимо:

git update-index --no-skip-worktree <file name>

Git Документы :

- [no-] skip-worktree

Когда одно из эти флаги указаны, имя объекта, записанное для путей, не обновляется. Вместо этого эти параметры устанавливают и сбрасывают бит "skip-worktree" для путей.

SKIP-WORKTREE BIT

Бит пропуска рабочего дерева может быть определен в одном ( long): при чтении записи, если она помечена как skip-worktree, то Git притворяется, что версия ее рабочего каталога актуальна, и вместо этого читает индексную версию.

0 голосов
/ 10 июля 2020

Когда вы удаляете файл локально, а также обновляете индекс (промежуточную область), запустив git rm --cached <file name>, удаление будет поэтапным.

Если вы запустите git status после запуска git rm --cached <file name>, вы увидите удаление подготовлено к следующей фиксации. Теперь, если вы внесете изменения в другие файлы и добавите эти файлы для фиксации, удаление все равно будет поэтапным. И когда вы, наконец, фиксируете и изменяете pu sh, удаление выполняется также и на удаленном компьютере. *.

Не запускать git rm --cached <file name>. Просто удалите файл вручную. Это сработает. Однако он всегда будет отображаться в неэтапных изменениях при запуске git status, как показано на изображении ниже.

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

0 голосов
/ 10 июля 2020

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

Другая возможность - использовать языковые функции чтобы избежать включения части кода.

В файлах C ++ это может быть раздел #ifdef (или #ifndef) в файле, а также вариант компиляции, который вы использовали бы на своем локальном компьютере для исключить содержимое файла.

...