Подтвердить что ты не робот

Является ли "refs/heads/master" таким же, как "refs/remotes/origin/master" в Git?

Вопрос прост: refs/heads/master то же самое, что и refs/remotes/origin/master? Если это не в некоторых случаях, как я могу узнать, когда это не так, и что это такое?

4b9b3361

Ответ 1

Это два разных символических имени, которые могут указывать на разные вещи. refs/heads/master - это ветвь в вашей рабочей копии с именем master. Часто это ветвь отслеживания refs/remotes/origin/master, потому что origin является именем по умолчанию для удаленного, созданного git clone, и его первичная ветка обычно также называется master.

Вы можете увидеть разницу между ними с git rev-list refs/heads/master..refs/remotes/origin/master, которая будет пуста, если они будут одинаковыми и в противном случае перечислит коммиты между ними.

Ответ 2

Ключевое различие заключается в том, что ветки под refs/heads/ являются ветвями, которые, когда у вас есть один извлеченный файл, можно продвигать, создавая новые коммиты. Тем не менее, в разделе refs/remotes/ есть так называемые "ветки удаленного отслеживания" - эти ссылки просто указывают на фиксацию того, что удаленный репозиторий был в последний раз, когда вы сделали git fetch <name-of-remote>, или успешный git push для соответствующая ветвь в этом удаленном репозитории. (Я написал сообщение в блоге, в котором говорится об этой разности в некоторой степени здесь.)