1

Следуя совету моего друга, я начал изучать git. Я прочитал руководство (основные разделы) и, думаю, понял больше всего о коммитах, ветвях, настройках назад, вперед и т.д., Но когда дело доходит до синхронизации локального репозитория с удаленным, я чувствую себя немного растерянным.

В настоящее время я тестирую git на моем `testrepository. Я добавлял файлы и папки локально, затем обновлял хранилище с помощью веб-сайта, добавляя дополнительные файлы. Затем я извлекал файлы, объединял коммиты и в итоге синхронизировал удаленные и локальные репозитории. Теперь у меня есть этот журнал:

*   5cf86124752ed91bde703bca0133b904b356c430 (HEAD -> master, origin/master, origin/HEAD) Merge branch 'master' into HEAD
|\
| * 510cb404d9a7d062739da7960546187436941e8e Add folder_local1/{folde_local1_program1, folde_local1_program2, folde_local1_program3}
* | d7461473939ee6663535650fec08962b30865c6e Delete folder_server2_program4.java
* | 010aba572c7424e81446e151433805ec6d2d92ea Delete folder_server2_program3.java
* | a30e5a06923935edbcb362afb6cf5dc169ec5a61 Delete folder_server2_program2.java
* | 89dc387d36a0370844bf90bc028e9b335de2b0b5 Delete folder_server2_program1.java
* | f80348f8fa02960cd20f349a862b7a31700a0fdd Delete x
* | 12deed224204c2ef5ab60c92f39682628fb23ab1 Add files via upload
* | f00f6b3d4feecd00f1258f32456e4bb5e2b4af4b Create x
* | 0e7965394aa9d36a17fefb2b52c032627c1e8e28 Add files via upload
* | 7d594dcdcd4b169a0563f63070c8975a5ee1bc27 Add files via upload
* | c078101bae4a3413700242025f2db9c4aeb9b1d8 Add files via upload
* | 9dab1a30425e4fc57e57770deb475dea341ab136 Update folder_server1_program1.java
* | 41b6ecad4759fdadcda8955046582178693612ae Create folder_server1_program1.java
|/
*   be40ad56685d5f836b88de960feb2d7b881e6f93 Merge branch 'master' of github.com:FranekW/testrepository
|\
| * 2790ba683034812c83da1310993e6326f91da42d Create README.md
* | 9caf9163056ccfc0b06cdd28704dee912f1643b5 Add folder1/{folder1_program1, folder1_program2, folder1_program3}
|/
* 376fe054b95134d7953cfafe3b70931ff036fbb8 Initial commit

Елки, origin/master и origin/HEAD оба красного цвета. Во-вторых, я не понимаю, что делает origin/HEAD ? Я думаю, что HEAD - это указатель, который указывает на мой текущий коммит. Может кто-нибудь объяснить, если журнал в порядке, или я перепутал слишком много. А также как понять `происхождение / ГОЛОВУ.

Большое спасибо

1 ответ1

4

HEAD имеет несколько дополнительных применений.

Поскольку HEAD является указателем на "текущий" коммит, это также коммит, который вы получаете по умолчанию при клонировании этого репозитория. Таким образом, в удаленных репозиториях, даже если у них нет рабочего дерева, HEAD может существовать как указатель на ветку "по умолчанию" - ту, которую клоны извлекут автоматически.

(Например, некоторые проекты указывают HEAD репозитория "master" на ветку "dev" или "stable" вместо master, так что люди получают что-то более полезное по умолчанию.)


В вашем случае, однако, после клонирования Git сохраняет ссылку <remote>/HEAD потому что у нее есть еще одно применение: он определяет, какие инструменты Git будут пытаться использовать ветку, если указано только удаленное имя.

Например, обычно вы не можете сделать git log origin, так как refs/remotes/origin/ является каталогом, поэтому нигде не может указывать. Однако Git автоматически ищет origin/ HEAD и дает вам любую ветвь, на которую указывает.

(Это можно установить с помощью git remote set-head origin ... в любую ветку, которая вам удобна.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .