Git: Как обновить / извлечь один файл из мастера удаленного источника? - PullRequest
284 голосов
/ 26 июля 2010

Сценарий:

  1. Я делаю некоторые изменения в одном файле локально и запускаю git add, git commit и git push
  2. Файл передается на удаленныйглавный репозиторий origin
  3. У меня есть другой локальный репозиторий, который развертывается через Capistrano с помощью метода "remote_cache" из этого удаленного репозитория
  4. Теперь я не хочу развертывать все приложение, а просто обновить /извлеките этот единственный файл.

Пожалуйста, возможно ли это как-то с помощью git?Я не смог найти ничего, что могло бы сработать, и не смог понять это.С SVN я просто сделал svn up file и вуаля.

Буду рад любой помощи, спасибо!

Ответы [ 6 ]

769 голосов
/ 13 декабря 2010

Это можно сделать (в развернутом хранилище)

git fetch
git checkout origin/master -- path/to/file

Выборка загрузит все последние изменения, но не поместит ее в ваш текущий извлеченный код (рабочая область).

Оформление обновит рабочее дерево с конкретным файлом из загруженных изменений (origin/master).

По крайней мере, это работает для меня для тех маленьких небольших исправлений опечаток, где это кажется страннымсоздать ветку и т. д., чтобы просто изменить одно слово в файле.

18 голосов
/ 23 сентября 2015
git archive --format=zip --remote=ssh://<user>@<host>/repos/<repo name> <tag or HEAD> <filename> > <output file name>.zip
16 голосов
/ 30 июля 2018

Следующий код работал для меня:

     git fetch
     git checkout <branch from which file needs to be fetched> <filepath> 
6 голосов
/ 26 июля 2010

Что вы можете сделать:

  1. Обновить локальное репозиторий git:

    git fetch

  2. Построитьместный филиал и оформление заказа на него:

    git branch pouet && git checkout pouet

  3. Примените коммит, который вы хотите к этой ветви:

    git cherry-pick abcdefabcdef

    (abcdefabcdef - это sha1 коммита, который вы хотите применить)

2 голосов
/ 19 сентября 2012

Или git stash (если у вас есть изменения) в вашей ветке, извлеките мастер, извлеките последние изменения, загрузите этот файл на рабочий стол (или во все приложение).Оформите ветку, в которой вы были.Git stash примените обратно в то состояние, в котором вы были, затем исправьте изменения вручную или перетащите его, заменив файл.

Этот способ не оооочень крутой, но он работает, если вы, ребята, не можете ничего понять.

0 голосов
/ 25 сентября 2017

Я думаю, что нашел легкий взлом.

Удалите файл, который у вас есть в локальном хранилище (файл, который вы хотите обновить из последней фиксации на удаленном сервере)

А потом сделай git pull

Поскольку файл удален, конфликта не будет

...