learning:git
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
learning:git [01.02.2025 06:46] – [Локальные и удалённые ветки] viacheslav | learning:git [02.02.2025 07:32] (текущий) – [Получение изменений из общего репозитория] viacheslav | ||
---|---|---|---|
Строка 704: | Строка 704: | ||
88622c4 2025-01-21 | Added H1 tag (tag: v1-beta) [Your Name] | 88622c4 2025-01-21 | Added H1 tag (tag: v1-beta) [Your Name] | ||
1a3a27e 2025-01-21 | Initial Commit [unknown] | 1a3a27e 2025-01-21 | Initial Commit [unknown] | ||
+ | </ | ||
+ | |||
+ | ==== Слияние полученных изменений удалённого репозитория с локальным ==== | ||
+ | '' | ||
+ | <code bash> | ||
+ | git merge origin/main | ||
+ | Updating 53c3dbd..7cc9cfb | ||
+ | Fast-forward | ||
+ | | ||
+ | 1 file changed, 2 insertions(+), | ||
+ | </ | ||
+ | Теперь файл README изменён и локально. | ||
+ | |||
+ | Есть возможность сразу и получить изменения из удалённого репозитория, | ||
+ | Т. е., '' | ||
+ | |||
+ | ==== Добавление локальной ветки, отслеживающей удалённую ==== | ||
+ | <code bash> | ||
+ | # Добавить ветку style, отслеживающую origin/ | ||
+ | git branch --track style origin/ | ||
+ | branch ' | ||
+ | |||
+ | # Локальная ветка style появилась в списке веток | ||
+ | git branch -a | ||
+ | * main | ||
+ | style | ||
+ | remotes/ | ||
+ | remotes/ | ||
+ | remotes/ | ||
+ | |||
+ | # и в логе | ||
+ | git log --max-count=2 | ||
+ | 7cc9cfb 2025-02-01 | Changed README in original repo (HEAD -> main, origin/ | ||
+ | 53c3dbd 2025-01-22 | Renamed hello.html; moved style.css (origin/ | ||
+ | </ | ||
+ | |||
+ | ===== Чистый репозиторий ===== | ||
+ | Чистый (голый, | ||
+ | <code bash> | ||
+ | cd .. | ||
+ | # Традиционно " | ||
+ | git clone --bare work work.git | ||
+ | Cloning into bare repository ' | ||
+ | done. | ||
+ | PS C: | ||
+ | |||
+ | Каталог: | ||
+ | |||
+ | Mode | ||
+ | ---- | ||
+ | d----- | ||
+ | d----- | ||
+ | d----- | ||
+ | d----- | ||
+ | -a---- | ||
+ | -a---- | ||
+ | -a---- | ||
+ | -a---- | ||
+ | </ | ||
+ | |||
+ | ==== Добавление чистого репозитория как удалённого, | ||
+ | <code bash> | ||
+ | cd work | ||
+ | # Добавить чистый репозиторий work.git как shared | ||
+ | git remote add shared ../work.git | ||
+ | |||
+ | # Чистые репозитории обычно располагаются на удаленном сервере и туда нельзя зайти, чтобы подтянуть изменения. | ||
+ | # Поэтому необходимо как-нибудь передать наши изменения в репозиторий. | ||
+ | |||
+ | # Внести изменения, | ||
+ | git add README | ||
+ | git commit -m "Added shared comment to readme" | ||
+ | [main 576bd94] Added shared comment to readme | ||
+ | 1 file changed, 1 insertion(+), | ||
+ | |||
+ | # Передать изменения в чистый репозиторий | ||
+ | git push shared main | ||
+ | Enumerating objects: 5, done. | ||
+ | Counting objects: 100% (5/5), done. | ||
+ | Delta compression using up to 8 threads | ||
+ | Compressing objects: 100% (3/3), done. | ||
+ | Writing objects: 100% (3/3), 399 bytes | 66.00 KiB/s, done. | ||
+ | Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) | ||
+ | To ..\work.git | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ==== Получение изменений из общего репозитория ==== | ||
+ | <code bash> | ||
+ | # Перейти в репозиторий назначения | ||
+ | cd ../home | ||
+ | # Добавить чистый репозиторий work.git как shared (так же, как ранее в исходном репозитории work) | ||
+ | git remote add shared ../work.git | ||
+ | # Отслеживать ветку main в shared | ||
+ | git branch --track shared main | ||
+ | branch ' | ||
+ | # Получить изменения из shared/main | ||
+ | git pull shared main | ||
+ | remote: Enumerating objects: 5, done. | ||
+ | remote: Counting objects: 100% (5/5), done. | ||
+ | remote: Compressing objects: 100% (3/3), done. | ||
+ | remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0) | ||
+ | Unpacking objects: 100% (3/3), 379 bytes | 27.00 KiB/s, done. | ||
+ | From ../work | ||
+ | * branch | ||
+ | * [new branch] | ||
+ | Updating 7cc9cfb..576bd94 | ||
+ | Fast-forward | ||
+ | | ||
+ | 1 file changed, 1 insertion(+), | ||
+ | </ | ||
+ | Теперь файл README изменился и в home. | ||
+ | |||
+ | ===== Git-сервер ===== | ||
+ | Git умеет быть и сервером. | ||
+ | <code bash> | ||
+ | cd .. | ||
+ | ls | ||
+ | |||
+ | Каталог: | ||
+ | |||
+ | Mode | ||
+ | ---- | ||
+ | d----- | ||
+ | d----- | ||
+ | d----- | ||
+ | |||
+ | |||
+ | # Запуск демона git (добавить --enable=receive-pack, | ||
+ | # сервер не производит аутентификацию, | ||
+ | git daemon --verbose --export-all --base-path=. | ||
+ | [20528] Ready to rumble | ||
+ | # Это появляется позже после подключения клиента | ||
+ | [21436] Connection from [::1]:34050 | ||
+ | [21436] unable to set SO_KEEPALIVE on socket: Input/ | ||
+ | [21436] Extended attribute " | ||
+ | [21436] Extended attribute " | ||
+ | [21436] Request upload-pack for '/ | ||
+ | </ | ||
+ | |||
+ | В другом окне терминала (прошлое занято выполняющимся сервисом): | ||
+ | <code bash> | ||
+ | cd C: | ||
+ | # Клонировать work.git с сервера в локальный net_work | ||
+ | git clone git:// | ||
+ | Cloning into ' | ||
+ | remote: Enumerating objects: 33, done. | ||
+ | remote: Counting objects: 100% (33/33), done. | ||
+ | remote: Compressing objects: 100% (25/25), done. | ||
+ | remote: Total 33 (delta 4), reused 0 (delta 0), pack-reused 0 (from 0) | ||
+ | Receiving objects: 100% (33/33), done. | ||
+ | Resolving deltas: 100% (4/4), done. | ||
+ | |||
+ | # Файлы появились | ||
+ | ls net_work | ||
+ | |||
+ | Каталог: | ||
+ | |||
+ | Mode | ||
+ | ---- | ||
+ | d----- | ||
+ | -a---- | ||
+ | -a---- | ||
</ | </ | ||
learning/git.1738392413.txt.gz · Последнее изменение: 01.02.2025 06:46 — viacheslav