Можем ли мы отслеживать удаленную ссылку без извлечения / извлечения / извлечения с помощью Git? - PullRequest
1 голос
/ 22 апреля 2020

Я создаю новый git репозиторий с

git init

Я добавил удаленный репозиторий

git remote add origin https://<URL>.git

Я хочу, чтобы мой локальный мастер ссылался на HEAD источника / мастера ,

Я не хочу запускать pull / fetch / checkout по нескольким причинам, включая тот факт, что он очень большой, и все, что я собираюсь сделать, это добавить файлы, а не изменять какой-либо существующий файл.

git remote show origin

показывает удаленные URL для fetch и pu sh и

  HEAD branch: master
  Remote branch:
    master new (next fetch will store in remotes/origin)

Я пытался

git branch --set-upstream-to master origin/master

, но это приводит к

fatal: branch 'origin/master' does not exist

Так нет ли способа сделать мой локальный мастер HEAD ref удаленным мастером HEAD, не вызывая загрузку всей ветви?

Я пытался извлечь один файл из источника / мастера, но он выдает ошибку

git checkout origin/master -- README.md

выдает ошибку

fatal: invalid reference: origin/master

и

git pull origin master -- README.md

приводит к

fatal: Couldn't find remote ref README.md

git branch -u origin/master
fatal: branch 'master' does not exist

git branch -u origin/master master
fatal: branch 'master' does not exist

git branch --set-upstream-to=origin/master
fatal: branch 'master' does not exist

Любой способ получить локальный мастер или удаленный мастер ГОЛОВУ, а затем я извлекаю / извлекаю / извлекаю только те файлы, которые мне нужны, или только добавляю файлы и пу sh их?

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Чтобы использовать --set-upstream-to, ветвь удаленного отслеживания должна существовать. Как правило, способ создания такой удаленной ветви отслеживания заключается в получении удаленной ветви или ее отправке на эту удаленную ветвь. Можно создать ветку удаленного отслеживания вручную с помощью git update-ref, но это вряд ли будет здесь полезно. Git не позволяет указывать несуществующую ссылку для предотвращения ошибок при вводе.

Имейте в виду, что если вы намерены просто добавлять файлы на удаленный компьютер, и вы делаете это без какой-либо истории удаленного, ваши ветви сформирует независимый root, который будет трудно объединить с остальной частью проекта. Люди, как правило, не оценят, что вы создаете такие ветки, и в некоторых ситуациях они могут вести себя странно.

Если ваша цель - ограничить объем загружаемых данных, вам, возможно, лучше сделать небольшую выборку или мелкую выборку. клон, который будет загружать ограниченную историю, но по-прежнему будет создавать соответствующие ветви удаленного отслеживания (что позволит вам использовать git branch --set-upstream-to) и работать с удаленным проектом обычным способом. Вы можете сделать это, например, с помощью git pull --depth=1 origin master.

0 голосов
/ 24 апреля 2020

Исходя из комментария bk2204 выше о некоторых RnD с моей стороны, я нашел по крайней мере 2 очень мощных метода для достижения вышеуказанной цели, которая заключалась в уменьшении размера хранилища, извлекаемого при клонировании с удаленного компьютера, поскольку мы, возможно, не захотим работать с большинством файлов, некоторые из которых могут быть очень большими.

В моем конкретном случае c у меня было хранилище на 140 МБ. Это не очень большой объем, но 139 МБ было сделано единовременно для существующих файлов веб-сервера, включая jars и jpgs. Ни один из них не предназначался для редактирования в течение длительного времени.

Я хотел клонировать репозиторий, чтобы изменить 1 текстовый файл и добавить несколько файлов. Однако во всех случаях, которые я пробовал, мне приходилось загружать все 140 МБ. По иронии судьбы, в моих попытках избежать загрузки 140 МБ, я скачал папку, скачав 12 странных раз!

Наконец, кажется, есть 2 решения, я добавляю ссылки ниже

  1. Git Частичное клонирование
  2. Git Разреженная проверка

Разреженная проверка великолепно объяснена в контексте проекта Mono на

Уменьшите размер монорепо с помощью редкой проверки

...