Как вытащить один файл из репозитория сервера в Git?
Я работаю на сайте с сервером под управлением Git. Я использую Git для развертывания (не GitHub). Это было настроено до моего участия с использованием метода ловушки, и я обратился к этому вопросу и ввел команды ниже, но это не сработало.
Как мне вытащить один файл с сервера? Например, если я хочу обновить свой локальный файл index.php? git pull index.php
?
Ответы
Ответ 1
Это можно сделать (в развернутом репозитории):
git fetch
// git fetch will download all the recent changes, but it will not put it in your current checked out code (working area).
С последующим:
git checkout origin/master -- path/to/file
// git checkout <local repo name (default is origin)>/<branch name> -- path/to/file will checkout the particular file from the downloaded changes (origin/master).
Ответ 2
git fetch --all
git checkout origin/master -- <your_file_path>
git add <your_file_path>
git commit -m "<your_file_name> updated"
Предполагается, что вы вытаскиваете файл из источника/мастера.
Ответ 3
Это может быть решением:
git fetch
git checkout origin/master -- FolderPathName/fileName
Благодарю.
Ответ 4
Этот сценарий возникает, когда вы - или вынуждаете больше, чем вы - искали файл в вашем локальном репо, и вы просто хотите восстановить свежую копию его последней версии из репо. Простое удаление файла с помощью /bin/rm (не git rm) или переименование/скрытие его, а затем выполнение git pull
не будут работать: git замечает отсутствие файла и предполагает, что вы, вероятно, хотите, чтобы он вышел из репозитория (git diff
покажет все строки удалены из отсутствующего файла).
git pull
не восстанавливает локально отсутствующие файлы, всегда разочаровывал меня в git, возможно, так как на меня влияли другие системы контроля версий (например, svn update, который, я считаю, восстановит файлы, которые были локально скрыты).
git reset --hard HEAD
- это альтернативный способ восстановить интересующий файл, так как он отбрасывает любые незафиксированные изменения, которые у вас есть. Однако, как отмечено здесь, git reset является потенциально опасной командой, если у вас есть другие незафиксированные изменения, которые вас волнуют.
Стратегия git fetch... git checkout
, отмеченная выше @chrismillah, является хорошим хирургическим способом восстановления файла, о котором идет речь.
Ответ 5
Попробуйте использовать:
git checkout branchName -- fileName
Пример:
git checkout master -- index.php
Ответ 6
https://raw.githubusercontent.com/[USER-NAME]/[REPOSITORY-NAME]/[BRANCH-NAME]/[FILE-PATH]
Ex. https://raw.githubusercontent.com/vipinbihari/apana-result/master/index.php
Благодаря этому вы получите содержимое отдельного файла в виде строки текста. Вы можете скачать этот текст с помощью wget.
Ex. https://raw.githubusercontent.com/vipinbihari/apana-result/master/index.php
Ответ 7
Этот пакет Windows работает независимо от того, включен он или нет на GitHub. Я использую его, потому что он показывает некоторые серьезные предостережения. Вы заметите, что операция медленная и занимает сотни мегабайт данных, поэтому не используйте этот метод, если ваши требования основаны на доступной пропускной способности /RW памяти.
sparse_checkout.bat
pushd "%~dp0"
if not exist .\ms-server-essentials-docs mkdir .\ms-server-essentials-docs
pushd .\ms-server-essentials-docs
git init
git remote add origin -f https://github.com/MicrosoftDocs/windowsserverdocs.git
git config core.sparseCheckout true
(echo EssentialsDocs)>>.git\info\sparse-checkout
git pull origin master
=>
C:\Users\имя пользователя \Desktop> sparse_checkout.bat
C:\Users\имя пользователя \Desktop> pushd "C:\Users\имя пользователя \Desktop \"
C:\Users\имя пользователя \Desktop>, если не существует. \Ms-server-essentials-docs mkdir.\Ms-server-essentials-docs
C:\Users\имя пользователя \Desktop> pushd.\Ms-server-essentials-docs
C:\Users\имя пользователя \Desktop\ms-server-essentials-docs> git init Инициализированный пустой репозиторий Git в C: /Users/имя пользователя /Desktop/ms-server-essentials-docs/.git/
C:\Users\имя пользователя \Desktop\ms-server-essentials-docs> git remote add origin -f https://github.com/MicrosoftDocs/windowsserverdocs.git Обновление источника удаленного: перечисление объектов: 97, выполнено. Удаленный: Подсчет объектов: 100% (97/97), сделано. удаленный: сжатие объектов: 100% (44/44), сделано. удаленный: всего 145517 (дельта 63), повторно использованный 76 (дельта 53), повторно использованный пакет 145420 Прием объектов: 100% (145517/145517), 751,33 МиБ | 32,06 МБ/с, готово. Разрешение дельт: 100% (102110/102110), сделано. С https://github.com/MicrosoftDocs/windowsserverdocs * [новая ветка]
1106-конфликт → происхождение /1106-конфликт * [новая ветвь]
FromPrivateRepo → origin/FromPrivateRepo * [новая ветвь]
PR183 → origin/PR183 * [новый филиал]
конфликт → источник/конфликт * [новая ветка]
eross-msft-patch-1 → origin/eross-msft-patch-1 * [новая ветвь]
master → origin/master * [новая ветка] patch-1
→ origin/patch-1 * [новая ветка] repo_sync_working_branch → origin/repo_sync_working_branch * [новая ветка]
shortpatti-patch-1 → origin/shortpatti-patch-1 * [новая ветка]
shortpatti-patch-2 → origin/shortpatti-patch-2 * [новая ветка]
shortpatti-patch-3 → origin/shortpatti-patch-3 * [новая ветка]
shortpatti-patch-4 → origin/shortpatti-patch-4 * [новая ветка]
shortpatti-patch-5 → origin/shortpatti-patch-5 * [новая ветка]
shortpatti-patch-6 → origin/shortpatti-patch-6 * [новая ветка]
shortpatti-patch-7 → origin/shortpatti-patch-7 * [новая ветка]
shortpatti-patch-8 → origin/shortpatti-patch-8
C:\Users\имя пользователя \Desktop\ms-server-essentials-docs> git config core.sparseCheckout true
C:\Users\имя пользователя \Desktop\ms-server-essentials-docs> (echo EssentialsDocs) 1 >>. Git\info\sparse-checkout
C:\Users\имя пользователя \Desktop\ms-server-essentials-docs> мастер создания git pull
С https://github.com/MicrosoftDocs/windowsserverdocs
* Мастер ветки → FETCH_HEAD
Ответ 8
git clone <git_repository>.git <path_to_desired_file>
Итак, чтобы вытащить MINAStatCollector.java
из: https://github.com/igniterealtime/Openfire/tree/master/src/java/org/apache/mina/management, вы делаете следующее:
git clone https://github.com/igniterealtime/Openfire.git Openfire/src/java/org/apache/mina/management/MINAStatCollector.java