Как синхронизировать вилку с исходным репозиторием Git

Вы участвуете в проекте с открытым исходным кодом и заметили, что ваша вилка не синхронизирована с исходным репозиторием. Как это исправить?

TL; версия DR

# Add a new remote upstream repository git remote add upstream //github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git # Sync your fork git fetch upstream git checkout master git merge upstream/master

Добавить новый удаленный репозиторий апстрима

Вы клонировали вилку на свой ноутбук и начали работать над проблемой.

Вы знали, что ваша вилка - сирота? Если вы укажете настроенный удаленный репозиторий, вы увидите только свою вилку как источник:

git remote -v origin //github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) origin //github.com/YOUR_USERNAME/YOUR_FORK.git (push)

Нет никаких признаков родителей! Где исходный репозиторий?

Нам необходимо настроить эту информацию, чтобы восстановить семейные отношения, добавив новый удаленный репозиторий апстрима:

git remote add upstream //github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

Вы спасли семью! Теперь вы можете увидеть как исходный репозиторий, так и вилку:

git remote -v origin //github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) origin //github.com/YOUR_USERNAME/YOUR_FORK.git (push) upstream //github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch) upstream //github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

Синхронизируйте вилку

Теперь все настроено. Вы можете синхронизировать вилку всего с двумя командами.

Убедитесь, что вы находитесь в корне вашего проекта, а также в главной ветке. В противном случае вы можете перейти в главную ветку:

git checkout master Switched to branch 'master'

Теперь вам нужно получить изменения из исходного репозитория:

git fetch upstream remote: Enumerating objects: 16, done. remote: Counting objects: 100% (16/16), done. remote: Compressing objects: 100% (7/7), done. remote: Total 7 (delta 5), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (7/7), 1.72 Kio | 160.00 Kio/s, done. From //github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY 909ef5a..0b228a8 master -> upstream/master

И объедините изменения в своей основной ветке:

git merge upstream/master Updating 909ef5a..0b228a8 Fast-forward node.js/WorkingWithItems/batch-get.js | 51 ++++++++++++++++++++++++++------------------------ node.js/WorkingWithItems/batch-write.js | 95 +++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------- node.js/WorkingWithItems/delete-item.js | 37 ++++++++++++++++++------------------ node.js/WorkingWithItems/get-item.js | 31 +++++++++++++++++-------------- node.js/WorkingWithItems/put-item-conditional.js | 51 +++++++++++++++++++++++++------------------------- node.js/WorkingWithItems/put-item.js | 49 ++++++++++++++++++++++++------------------------ node.js/WorkingWithItems/transact-get.js | 51 ++++++++++++++++++++++++++------------------------ node.js/WorkingWithItems/transact-write.js | 79 ++++++++++++++++++++++++++++++++++++++++------------------------------------- node.js/WorkingWithItems/update-item-conditional.js | 51 ++++++++++++++++++++++++++------------------------ node.js/WorkingWithItems/update-item.js | 47 ++++++++++++++++++++++++---------------------- 10 files changed, 282 insertions(+), 260 deletions(-)

Это оно! Теперь ваша вилка обновлена.

Любые вопросы? Не стесняйтесь обращаться ко мне в Twitter!