Git Branch и Remote в моем терминале отличается от того, что я вижу в GitHub - PullRequest
0 голосов
/ 14 мая 2018

Я изучаю git, и это сбивает меня с толку. Я запутался в ветках, удаленном репозитории и каталогах. Кто-то еще клонировал код на моей локальной машине. Когда я делаю git branch, я вижу эти три ветви:

ChrisMerge
* EliasWork
develop

и когда я делаю git remote, я получаю эти

chris
origin
prime

Я подумал, что это каталоги, но я не могу найти ни одного каталога с именем chris, разработайте. Так где хранятся коды? Потому что коды в каждом из них разные.

В моей учетной записи git на github.com я подумал, что, может быть, я смогу увидеть там одно из этих имен. Но под ветвями есть другие имена, такие как, devel, ver, ... Мне нужен кто-то, кто разъяснит мне это раз и навсегда.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Поскольку я не знал даже самых простых вещей, я не мог задавать правильные вопросы. Я пытался читать, читать и понимать немного мерзавца. Я хочу поделиться базовыми вещами, которые я не знал, и, надеюсь, это поможет людям, которые не специализируются в информатике, таким как я, понимать git. Обратите внимание, что я не пытаюсь быть точным здесь, я просто хочу, чтобы вы начали, как я. Вы можете увидеть этот удивительный учебник для получения дополнительной информации.

  1. Это объекты коммитов, которые имеют все файлы
  2. Разница между объектами коммита обычно заключается в изменении или добавлении файлов. Таким образом, они могут иметь разные файлы
  3. Ветви - это объекты коммитов, которые мы им называем. Их цель - добавить некоторые функции или исправить некоторые ошибки. В моем случае ChrisMerge, EliasWork и развиваюсь.
  4. В противном случае каждый объект коммита имеет длинное имя SHA1. Например, моя ветвь EliasWork имеет этот SHA1: 007415674d8e44908ce2786e164e9e8a751c3984 и a98fd670b9b5c39c8b049671a349f9dfd7b362e3 - это объект фиксации, у которого нет конкретного имени ветви или заголовка, но другой упомянутый мной объект фиксации имеет имя EliasWork.
  5. практически заголовок означает общее имя ветви, а HEAD - активная ветвь.
  6. под активной веткой, я имею в виду, когда вы смотрите на этот каталог, вы видите файлы, связанные с этой веткой. если вы меняете активную ветку, вы видите разные файлы.
  7. Так что у вас есть несколько веток, которые действуют как разные каталоги. но вы можете видеть и изменять только файлы для активной ветви. EliasWork - это активная ветка, и я вижу файлы, относящиеся к этой ветке.
  8. Крис, origin и prime - это удаленные репозитории. У них есть свои ветви и коммиты. здесь происхождение - это то, что я вижу в своем аккаунте на github. Я клонировал этот удаленный репозиторий на своей локальной машине, и у меня есть все его объекты коммита, но у меня есть только удаленная активная ветвь, то есть разработка, а не другие ее ветки. А затем я создал еще одну ветку под названием EliasWork, чтобы я мог изменить коды и затем отправить их в главный репозиторий
0 голосов
/ 15 мая 2018

A Git remote - это просто короткое имя, под которым Git хранит некоторые данные.Это не каталог.Запуск git remote выводит список всех удаленных имен, о которых знает Git, и это в основном все, что git config --list будет перечислять, начиная с remote.: вы увидите:

remote.chris.url = <some url>
remote.origin.url = <another url>
remote.prime.url = <yet another url>

и, возможно, дополнительные строки, такие как:

remote.chris.fetch = +refs/heads/*:refs/remotes/chris/*

и так далее.Именно эти строки существование создают так называемый пульт.В частности, строки fetch сообщают git fetch, что ваш Git должен скопировать из другого Git, а строки url сообщают вашему Git, как связываться с каждым из других Git.


A имя ветви , напротив, это имя, которое ваш Git использует для хранения одного конкретного хеш-идентификатора коммита.Это имя зависит от вас - оно не контролируется любым другим Git, оно контролируется вами, когда вы просите свой Git создать имена веток.В общем, если ваш пульт с именем origin имеет ветку с именем master, , ваш Git запомнит это имя как origin/master, и вы можете захотеть, чтобы имя вашей ветви master запомнило origin/master, чтоваш Git запоминает master на Git, который ваш Git вызывает через remote.origin.url.

Git называет эти имена - origin/master и т. д. имена для удаленного слежения или имена филиалов удаленного отслеживания .На самом деле они не являются именами ветвей, и они отличаются (но, очевидно, связаны) с пультами .Они используются для того, чтобы ваш Git запоминал («отслеживал») ветви на пульте, поэтому они называются именами удаленного отслеживания .


Обычно, ничего из этого не вызывает особого замешательства, потому что большинство пользователей в своих репозиториях Git имеют только один пульт с именем origin, поэтому их master будет соответствовать origin/master.Но в вашем случае у вас есть три пультов.Git по адресу, названному через prime, вероятно , также имеет master, который ваш Git запомнит через prime/master.Так что теперь у вас есть и origin/master и prime/master.Если вы хотите работать с ними, обычной рекомендацией будет использование вашей ветки с именем master для работы с origin/master и вашей ветки с именем master для работы с prime/master.Но это обречено на провал - поэтому вам нужно будет использовать некоторые другие имена локальных веток, и вот тут все становится запутанным.

К счастью, как мы только что видели, вашимена собственных ветвей не должны совпадать с именем какого-либо пульта.Вы можете иметь ветку типа EliasWork, которая связана или не подключена к любому ваших имен для удаленного отслеживания.Ограничение состоит в том, что каждое имя ветви может иметь только один из этих наборов.Git называет это upstream ветви.


Очень странно, когда мы устанавливаем имя удаленного отслеживания в качестве восходящего потока ветви, Git говорит, что эта ветка теперь«отслеживание» это имя удаленного отслеживания.Итак, теперь у нас есть:

  • A имя ветви , которое является локальным именем, которое мы создаем для себя ...
  • , то есть tracking (как отдельное слово) восходящий поток из ...
  • a имя удаленного отслеживания или удаленное отслеживание ветви-имя , которое, как завершенная фраза, на самом деле является локальным именем ...
  • , которое запоминает имя ветви , как видно на удаленном ...
  • , где remote - это короткое имя для URL-адреса для некоторого другого Git-репозитория (вот так!).

Обратите внимание, что это продолжает повторное использование различныхслова, и иметь их означают разные вещи!По терминологии, это оставляет желать лучшего.

В любом случае, ни один из этих каталогов не будет отображаться в вашем рабочем дереве , где вы выполняете свою работу,(Git иногда создает некоторые каталоги в .git, используя эти имена, но каталог .git, в котором хранится сам репозиторий, технически не включен в ваше рабочее дерево.)

...