Skip to content

Instantly share code, notes, and snippets.

@artyom
Created March 10, 2016 08:52
Show Gist options
  • Select an option

  • Save artyom/540b02e04a08e1029eaa to your computer and use it in GitHub Desktop.

Select an option

Save artyom/540b02e04a08e1029eaa to your computer and use it in GitHub Desktop.

Использование git subtree без git subtree

Оригинал статьи: http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/

Также см. оригинальную документацию: http://www.git-scm.com/book/en/Git-Tools-Subtree-Merging

Добавить репозиторий как remote:

git remote add -f gouuid https://github.com/nu7hatch/gouuid.git

Запустить merge со стратегией ours (предпочтение текущей ветки) без выполнения самого коммита:

git merge -s ours --no-commit --squash gouuid/master

Добавить файлы из бранча в подкаталог текущего индекса:

git read-tree --prefix=_deps/src/github.com/nu7hatch/gouuid -u gouuid/master

Выполнить коммит:

git commit

Обновление зависимости

В репозитории, где выполняются нижеперечисленные команды, должен быть добавлен remote с соответствующим именем.

Обновление remote:

git remote update gouuid

Посмотреть разницу между имеющейся версией и master веткой апстрима:

git diff HEAD:_vendor/src/github.com/nu7hatch/gouuid gouuid/master

Для подтягивания всех изменений с внесением их в историю основного репозитория можно выполнить такую команду:

git pull -s subtree \
	-X subtree=_vendor/src/github.com/nu7hatch/gouuid \
	gouuid master

Более вероятно, что сторонняя история не будет нужна, обновить код, не включая её в историю основного репозитория можно следующим образом:

git pull -s subtree \
	-X subtree=_vendor/src/github.com/nu7hatch/gouuid \
	--squash --no-commit gouuid master

git commit -m 'gouuid dependency updated'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment