GIT: Remote
Remote
Remote — другая копия репозитория, о которой знает данная.
Сведения о remote записываются в .git/config
. Remote задаётся именем
(оно не значимо) и URL.
См. git-config(1)
, ищите там ключ remote.<name>.url
и те, что под
ним.
fetch
fetch git fetch
обновляет сведения о ветках и тегах в
remote-репозиториях и выкачивает объекты, доступные из них.
Список веток хранится в .git/refs/remotes/имя/
.
Чтобы увидеть не только ветки в локальном репозитории, но и в remote,
нужно выполнить git branch --all
.
upstream
Upstream (tracking)-ветка См. git-config(1)
, ключи:
-
branch.<name>.remote
”--- в каком репозитории хранится “главная” версия данной ветки; -
branch.<name>.merge
”--- как называется соответствующая ветка в том репозитории.
Назначение веток:
-
git checkout X
, если ветки нет в локальном репозитории, но есть в каком-то remote, создаст новую ветку и назначит ей upstream. -
git push -u Y X
назначит ветке upstream-ветку из remote .
pull и push
-
git pull
делаетgit fetch
, а затемgit merge Y/X
, где ”--- это upstream-ветка для данной. -
git pull --rebase
делаетgit fetch
, а затемgit rebase Y/X
. -
git push
отсылает изменения в upstream и делаетgit merge
, но на стороне upstream. -
git push --force
отсылает изменения в upstream и делаетgit reset
на стороне upstream. -
git push --force-with-lease
отсылает изменения в upstream, сверяет состояние upstream с тем, которое выкачано локально, и делаетgit reset
только в том случае, если upstream не менялся.
submodules
git submodules Submodules — механизм git, позволяющий отсылаться к содержимому других репозиториев (с другими проектами) из данного.
Например, можно положить как submodule в свой репозиторий какую-нибудь библиотеку, исходники которой нужны для сборки.
Репозитории для submodule хранятся в .git/modules
; описания submodule
— в .git/config
. В index и в tree-объектах хранится запись о
директории submodule, где в качестве хэша указан хэш коммита в
репозитории данного submodule.
Список этих хэшей можно увидеть командой git submodule
.
По умолчанию git clone
не выкачивает submodule, из-за чего сборка
может ломаться. Тогда можно вызвать git submodule init
или сразу
выкачивать с git clone --recurse-submodules
.
См. git-submodule(1)
.