Получение изменений из удаленного репозитория
Для доступа к удаленным репозиториям можно использовать распространенные команды Git.
Options for getting changes
These commands are very useful when interacting with a remote repository. clone and fetch download remote code from a repository’s remote URL to your local computer, merge is used to merge different people’s work together with yours, and pull is a combination of fetch and merge .
Cloning a repository
To grab a complete copy of another user’s repository, use git clone like this:
$ git clone https://github.com/USERNAME/REPOSITORY.git # Clones a repository to your computer
You can choose from several different URLs when cloning a repository. While logged in to GitHub, these URLs are available on the main page of the repository when you click

When you run git clone , the following actions occur:
- A new folder called repo is made
- It is initialized as a Git repository
- A remote named origin is created, pointing to the URL you cloned from
- All of the repository’s files and commits are downloaded there
- The default branch is checked out
For every branch foo in the remote repository, a corresponding remote-tracking branch refs/remotes/origin/foo is created in your local repository. You can usually abbreviate such remote-tracking branch names to origin/foo .
Fetching changes from a remote repository
Use git fetch to retrieve new work done by other people. Fetching from a repository grabs all the new remote-tracking branches and tags without merging those changes into your own branches.
If you already have a local repository with a remote URL set up for the desired project, you can grab all the new information by using git fetch *remotename* in the terminal:
$ git fetch REMOTE-NAME # Fetches updates made to a remote repository
Otherwise, you can always add a new remote and then fetch. For more information, see «Managing remote repositories.»
Merging changes into your local branch
Merging combines your local changes with changes made by others.
Typically, you’d merge a remote-tracking branch (i.e., a branch fetched from a remote repository) with your local branch:
$ git merge REMOTE-NAME/BRANCH-NAME # Merges updates made online with your local work
Pulling changes from a remote repository
git pull is a convenient shortcut for completing both git fetch and git merge in the same command:
$ git pull REMOTE-NAME BRANCH-NAME # Grabs online updates and merges them with your local work
Because pull performs a merge on the retrieved changes, you should ensure that your local work is committed before running the pull command. If you run into a merge conflict you cannot resolve, or if you decide to quit the merge, you can use git merge —abort to take the branch back to where it was in before you pulled.
Further reading
- «Working with Remotes» from the Pro Git book»
- «Troubleshooting connectivity problems»
Как перенести репозиторий git из одной папки в другую?
Добрый день.
Скопировал репозиторий с git’a на локальную машину, но случайно не в ту папку. Как правильно изменить локальную папку для репозитория?
- Вопрос задан более трёх лет назад
- 10492 просмотра
Комментировать
Решения вопроса 1
Алексей Уколов @alexey-m-ukolov
Просто взять и перенести все содержимое, включая папку .git и все скрытые файлы и папки.
Или удалить неправильную папку и склонировать заново в нужную, если заморачиваться не хочется и изменений никаких несохраненных на сервере нет.
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Ответы на вопрос 0
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Git
Что за непонятные html-файлы?
- 2 подписчика
- вчера
- 185 просмотров

- Git
Как запушить проект webpаck на GitHub, но при этом не толкать все зависимости?
- 1 подписчик
- вчера
- 94 просмотра
Как с локального репозитория перенести в github
Запись: xintrea/mytetra_db_armagedec/master/base/1481567592x5vf9ygodr/text.html на raw.githubusercontent.com
Разработка с применением GIT обычно начинается с того, что вначале программист держит локальный GIT репозитарий на своей рабочей машине, и ежедневно коммитит в него. Но наступает момент, когда нужно перенести репозитарий на сервер для совместной работы или синхронизации с разных компьютеров. Перенести нужно вместе со всей историей коммитов. В этой статье написано как это сделать.
Итак, предположим, что у нас создан на GitHub.com или на BitBucket.org новый репозитарий. URL этого репозитария пусть будет следующим:
Находясь в рабочей директории даем две команды:
$ git remote add server https://username@bitbucket.org/username/funnyproject.git
$ git push server master:master
Первой командой мы добавили в настройки репозитария URL сервера. Второй командой залили на сервер полную копию локального GIT репозитария основной ветки.
Далее предполагается, что теперь при выполнении команд push и pull , GIT должен работать с вышеуказанным сервером. Другими словами, сервер должен быть установлен по-умолчанию. Для этого обязательно нужно дать команду:
$ git config remote.origin.url https://username@bitbucket.org/username/funnyproject.git
После которой git push и git pull будут по-умолчанию работать с сервером. Если этого не сделать, при push будет ошибка:
fatal: No destination configured to push to.
А при pull тоже будет похожая ошибка:
fatal: No remote repository specified. Please, specify either a URL or a
remote name from which new revisions should be fetched.
Так что устанавливайте значение конфигурационной переменной remote.origin.url в URL сервера, как это показано выше. Или можно воспользоваться следующей командой:
git remote set-url origin https://username@bitbucket.org/username/funnyproject.git
Узнать, какие настройки сделаны в текущем GIT репозитарии можно с помощью команды:
$ git config —list
Ну вот впринципе и все. Напомню, на всякий случай, набор команд чтобы закоммитить изменения и отправить на сервер:
$ git add .
$ git commit -a
$ git push
А перед началом работы теперь нужно синхронизироваться с сервером с помощью команды:
Надеюсь, этот рецепт поможет вам сберечь часы, потраченные на раскопки в документации.
- Первичная настройка Git (First Time Git Setup)
- Удаление remote branch
- Шпаргалка по командам
- Формат pretty
- Как смержить изменения с experimental в master
- Как переключится на нужный коммит
- Понимание работы merge
- Как просмортеть изменения внесенные определенным коммитом
- Как посмотреть историю изменения конкретного файла
- Как вернуть один файл в состояние, которое было в определенном коммите
- Как узнать текущую ветку
- Как внести изменения в последний коммит
- Как подключить новую ветку с сервера
- Как исправить HEAD detached from
- Как испарвить ошибочный комментарий к коммиту
- Как создать новую ветку в условиях, когда произошли изменения после последнего коммита
- Как залить локальную ветку на удаленный репозиторий
- Ежедневный git
- Команда stash
- Как посмотреть настройки репозитория
- Как перенести локальный репозиторий на сервер
- Команда reset, откат
- Команда revert
- Работа с ветками
- Команда rebase
- Особенности log при навигации по истории с помощью checkout
- Разница между pull и fetch
- Удачная модель ветвления
- Использование proxy
- Использование различных SSH ключей
- Очистка индекса
Перенос git-репозитория
Как полностью перенести репозиторий a в b ?
Под полностью подразумевается, что должны сохраниться все ветки и все коммиты.
Отслеживать
задан 27 сен 2016 в 18:04
123k 24 24 золотых знака 126 126 серебряных знаков 303 303 бронзовых знака
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
git clone --bare [email protected]:my-repo-a.git git fetch origin git remote add new-origin [email protected]:my-repo-b.git git push --mirror new-origin git remote rm origin git remote rename new-origin origin
Updated: поправил с учётом комментариев
Отслеживать
34k 25 25 золотых знаков 130 130 серебряных знаков 222 222 бронзовых знака
ответ дан 27 сен 2016 в 18:11
Alex Chermenin Alex Chermenin
5,468 15 15 серебряных знаков 36 36 бронзовых знаков
первой командой стоило добавить $ git clone —bare [email protected]:my-pepo-a.git .
27 сен 2016 в 19:35
и вместо двух команд push можно было использовать одну, с опцией —mirror : $ git push —mirror new-origin . она отправит все указатели — и ветки и метки.
27 сен 2016 в 20:02
А для чего нужен bare? // + @alexanderbarakin
28 сен 2016 в 21:11
@Qwertiy, без —bare , помимо копирования содержимого хранилища, из него будет ещё локально распаковано содержимое ветки, являющейся текущей. для решения задачи, оозвученной в вопросе, эта операция (распаковка) не требуется.
28 сен 2016 в 22:21
вроде после первого шага — перед fetch нужно перейти в скаченную директорию
16 сен 2020 в 6:58
если на целевом сервере есть возможность выполнять команды оболочки от имени пользователя, которому принадлежит каталог с хранилищем (в вопросе для иллюстрации указан пользователь git), то можно обойтись без копирования хранилища с исходного сервера на локальный компьютер, а затем на целевой сервер.
-
сделайте текущим каталог с целевым хранилищем:
$ cd /путь/к/my-repo-b.git
$ git remote add --mirror=fetch copy url-исходного-хранилища
$ git remote update copy
всё. при желании можно удалить ссылку на исходное-хранилище:
$ git remote remove copy
если у пользователя, которому принадлежит каталог с хранилищем, не разрешён запуск интерактивной оболочки, но у вас есть возможность выполнять команды от имени пользователя root, перечисленное выше можно сделать и от имени root-а, но по завершении, не меняя текущего каталога, надо установить всем файлам/каталогам такого же владельца и группу, как и у текущего каталога, с помощью, например, такой команды (естественно, от того же имени):
$ chown -R --reference=. .
а если и исходный и целевой сервер — это одна и та же машина, то вместо всего вышеперечисленного можно просто скопировать файлы:
$ cp -a /путь/к/my-repo-a.git/* /путь/к/my-repo-b.git/