Я хочу передать все файлы, кроме одного файла. Могу ли я это сделать с помощью клиента GitHub для Windows или мне нужно использовать командную строку? Если мне нужно использовать командную строку, как ее использовать?
Как скопировать весь файл, кроме одного в GitHub для Windows
Ответ 1
Насколько я знаю, это невозможно без использования командной строки git. В git Shell у вас есть несколько вариантов. Все они дают несколько иной результат.
-
Если вы хотите просто исключить файл на некоторое время (возможно, одно коммит) и добавить его в будущую фиксацию, вы можете выполнить следующие команды:
git add . git reset filename git commit -m "commit message"
Первая команда добавляет все файлы в промежуточную область. Затем вторая команда удаляет один файл из промежуточной области. Это означает, что файл не добавляется в коммит, но изменения в нем сохраняются на вашем локальном диске.
-
Если файл уже привязан к репозиторию, но вы только спорадически хотите зафиксировать дальнейшие изменения файла, вы можете использовать
git update-index --assume-unchanged
таким образом:`git update-index --assume-unchanged filename`
Если вы затем измените файл локально, он не будет добавлен в промежуточную область, когда вы выполните что-то, чтобы добавить все файлы, например
git add .
. Когда через некоторое время вы захотите снова зафиксировать изменения в файле, вы можете запуститьgit update-index --no-assume-unchanged filename
, чтобы остановить игнорирование изменений. -
Вы можете использовать файл
.gitignore
, если вы вообще не хотите отслеживать файл. Чтобы игнорировать файл с именемfilename
, вы создаете или редактируете файл с именем.gitignore
. Поместитеfilename
в отдельной строке, чтобы игнорировать этот файл. Теперь файл не добавляется в промежуточную область при выполненииgit add .
. Примечание. Если файл уже проверен, вам нужно удалить его из хранилища, чтобы он фактически начал игнорировать его. Для этого выполните следующие действия:`git rm --cached filename`
Параметр
--cached
указывает, что файл должен быть удален только из индекса. Локальный файл, независимо от того, изменился он или нет, останется тоже самое. Вы можете добавить файл.gitignore
и зафиксировать, чтобы файл проигнорировался на других машинах с тем же репозиторием. -
Если вы хотите игнорировать файл без следа, но не хотите делиться этим игнорированием с другими вкладчиками репозитория, вы можете поместить имена проигнорированных файлов в файл
.git/info/exclude
. Каталог.git
обычно скрыт, но вы можете сделать его видимым, изменив параметры папки. Как и в файле.gitignore
, вы должны выполнитьgit rm --cached filename
, если файл уже был проверен предыдущей фиксацией.
Некоторые примечания:
- Измените
filename
на фактическое имя файла, который вы хотите исключить. - Вместо исключения одного файла вы также можете исключить полный каталог. Вы можете сделать это, просто заменив имя каталога вместо
filename
. - Простым способом запуска оболочки git является запуск GitHub для Windows, щелчок правой кнопкой мыши по проекту, в котором вы хотите исключить/проигнорировать файл и выбрать опцию
Open in Git Shell
. Теперь вы находитесь в корне репозитория git, и вы можете приступить к выполнению команд, которые показаны и описаны в этом ответе.
Ответ 2
Я бы сделал следующее:
git add .
git checkout filename
git commit -m "commit message"
Первая строка добавляет все файлы в список, а вторая строка удаляет указанный вами файл, где "filename" должно быть именем файла, который вам не нужен в вашей фиксации.
или
git checkout filename
git commit -am "commit message"
git commit -am добавляет файлы и одновременно делает сообщение фиксации.
И если вам нужно УДАЛИТЬ изменения, внесенные в последний файл:
git stash -u