У меня такая же проблема. Я решил проблему со следующим кодом:
app.use('/img',express.static(path.join(__dirname, 'public/images')));
app.use('/js',express.static(path.join(__dirname, 'public/javascripts')));
app.use('/css',express.static(path.join(__dirname, 'public/stylesheets')));
Пример статического запроса:
http://pruebaexpress.lite.c9.io/js/socket.io.js
Мне нужно более простое решение. Он существует?
если вы еще не отправили свои изменения в git
git reset --soft HEAD~1
Он сбросит все изменения и вернется к одному коммиту обратно
Если это последний сделанный вами коммит и вы хотите чтобы удалить файл из локального и удаленного репозитория, попробуйте это:
git rm <file>
git commit --amend
или даже лучше:
сбросить сначала
git reset --soft HEAD~1
сбросить ненужный файл
git reset HEAD path/to/unwanted_file
совершить снова
git commit -c ORIG_HEAD
Просто хотел дополнить главный ответ, так как мне нужно было выполнить дополнительную команду:
git reset --soft HEAD^
git checkout origin/master <filepath>
Приветствия!
Использование git GUI может упростить удаление файла из предыдущего коммита.
Предположим, что это не общая ветка, и вы не возражаете переписать историю , а затем выполните:
git gui citool --amend
Вы можете отменить проверку файла, который был ошибочно принят и затем нажмите «Подтвердить».
Файл удален из коммита, но будет храниться на диске . Поэтому, если вы сняли галочку с файла после того, как по ошибке его добавили, он отобразится в вашем списке неотслеживаемых файлов (а если вы сняли галочку с файла после того, как по ошибке его изменили, он отобразится в ваших изменениях, не подготовленных для списка фиксации).
Удаление файла с помощью rm приведет к его удалению!
Вы всегда добавляете коммит в git, а не удаляете, поэтому в этом случае верните файл в состояние, в котором он находился до первого коммита (это может быть действие удаления «rm», если файл новый), а затем повторная фиксация, и файл будет запущен.
Чтобы вернуть файл в какое-то предыдущее состояние:
git checkout <commit_id> <path_to_file>
или вернуть его в состояние на удаленной головке:
git checkout origin/master <path_to_file>
затем измените коммит, и вы должны найти файл исчез из списка (и не удален с вашего диска!)
Как показывает принятый ответ, вы можете сделать это, сбросив весь коммит. Но это довольно тяжелый подход.
Более чистый способ сделать это - сохранить коммит и просто удалить измененные файлы из него.
git reset HEAD^ -- path/to/file
git commit --amend --no-edit
git reset
возьмет файл, как это было в предыдущем коммите, и поместит его в индекс. Файл в рабочем каталоге остается нетронутым.
git commit
будет затем фиксировать и сдавливать индекс в текущем коммите.
Это, по сути, берет версию файла, которая была в предыдущем коммите, и добавляет ее к текущему коммиту. Это не приводит к чистым изменениям, и поэтому файл эффективно удаляется из коммита.
ВНИМАНИЕ ! Если вы хотите только удалить файл из предыдущего коммита и сохранить его на диске , прочитайте ответ Джуззлина чуть выше.
Если это ваш последний коммит и вы хотите полностью удалить файл из вашего локального и удаленного репозитория , вы можете:
git rm <file>
git commit --amend
Флаг поправки говорит git снова фиксировать, но «объединить» (не в смысле слияния двух веток) этот коммит с последним совершить.
Как указано в комментариях, использование git rm
здесь похоже на использование самой команды rm
!
git reset --soft HEAD^
сворачивает ваш коммит, и когда вы набираете git status
, он говорит вам, что делать:
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
git rm --cached <file_to_remove_from_commit_<commit_id>_which_added_file>
git commit -m "removed unwanted file from git"
оставит вам локальный файл. Если вам также не нужен локальный файл, вы можете пропустить опцию --cached.
Если вся работа выполняется в вашей локальной ветке, вам нужно сохранить файл в более позднем коммите, и, как и при наличии чистой истории, я думаю, что более простой способ сделать это может быть:
git rm --cached <file_to_remove_from_commit_<commit_id>_which_added_file>
git commit --squash <commit_id>
git add <file_to_remove_from_commit_<commit_id>_which_added_file>
git commit -m "brand new file!"
git rebase --interactive <commit_id>^
и затем вы можете легко завершить ребазинг, не запоминая более сложные команды, не фиксируя сообщение или не набирая столько текста.
Если вы используете GitHub и еще не отправили коммит, GitHub Desktop легко решает эту проблему:
Если вам больше не нужен этот файл, вы можете сделать
git rm file
git commit --amend
git push origin branch
У меня была такая же проблема, когда у меня произошли изменения в локальной ветке, где я хотел вернуть только один файл. То, что сработало для меня, было -
( feature / target_branch ниже, где у меня есть все мои изменения, включая те, которые я хотел отменить для определенного файла)
( origin / feature / target_branch - это удаленная ветка, в которую я хочу отправить свои изменения)
( Feature / Staging - это моя временная промежуточная ветвь, в которую я буду выталкивать все свои разыскиваемые изменения, за исключением изменения в этом одном файле)
Создать локальную ветку из моего origin / feature / target_branch - назвал его feature / staging
Слил мою рабочую локальную ветку feature / target_branch с ] функция / сценарий ветка
Извлечено функция / сценарий , затем git reset --soft ORIG_HEAD (теперь все Изменения от функции / постановки 'будут поставлены, но не зафиксированы.)
Unstaged файл, который я ранее проверял в остроумии h ненужные изменения
Изменена восходящая ветка для Feature / Staging на origin / feature / target_branch
Передали оставшиеся поэтапные изменения и отправили вверх по течению к моему удаленному origin / feature / target_branch
Следующее действие приведет к удалению только того файла, который вы намеревались, о чем и спрашивал ОП.
git reset HEAD^ /path/to/file
Вы увидите что-то вроде следующего ...
Изменения, подлежащие фиксации: (используйте «git reset HEAD ...» для удаления)
изменено: / путь / к / файлу
Изменения не подготовлены для фиксации: (используйте «git add ...» для обновления того, что будет зафиксировано) (используйте «git checkout - ...» для отмены изменений в рабочем каталоге)
изменено: / путь / к / файлу
На данный момент вы можете делать с файлом все, что захотите, например, сбросить на другая версия.
Когда вы будете готовы к фиксации:
git commit --amend -a
или (если у вас есть какие-то другие изменения, которые вы еще не хотите фиксировать)
git commit add /path/to/file
git commit --amend
Я скопировал текущие файлы в другой папке, затем избавьтесь от всех непродвинутых изменений:
git reset --hard @{u}
Тогда вещи копии назад. Фиксация, Нажатие.