Intereting Posts

Как получить git филиал коллеги, который был уволен

Короткий вопрос

Учитывая, что у меня есть доступ только для чтения к другому git-репо на том же сервере, как я могу скопировать конкретную ветку из этого репо в свою собственную?

Длинная история

Мой коллега и я писали код на одном и том же dev-сервере.

Я пользователь1, и мой git repo находится здесь:

 /home/user1/website 

Мой коллега – user2 и его git repo находится здесь:

 /home/user2/website 

Он работал над веткой с hotfix .

Плохие новости

Он был уволен, прежде чем он смог направить свою ветку hotfix на наш удаленный репо (размещен в другом месте). Поэтому из моего репо я не могу выполнить git checkout или git fetch его hotfix .

Кроме того, у меня есть только привилегии только для чтения в его каталоге. Если я cd к его репо на /home/user2/website , текущая ветвь, которая вычеркнута, является master . Если я попытаюсь git checkout hotfix из своего репо, я получаю это сообщение об ошибке:

 fatal: Unable to create '/home/user2/.git/index.lock': Permission denied 

Хорошие новости

У меня есть привилегии только для чтения. Хотя я не могу git checkout , я действительно могу git show , git log , git diff и т. Д.

Так что мой вопрос …

Учитывая, что у меня есть доступ только для чтения к репо моего коллеги, как я могу скопировать конкретную ветку из своего репо на мой?

Solutions Collecting From Web of "Как получить git филиал коллеги, который был уволен"

Есть много способов; вот два:

  • Клонировать его:

     cd $HOME mkdir his cd his git clone /home/user2/website 

    Теперь у вас есть полностью отдельный репозиторий, который является клоном этого репозитория.

  • Добавьте его как удаленный, затем выберите:

     git remote add his file:///home/user2/website git fetch his 

    Теперь у вашего репозитория есть remotes/his/ ветви, которые вы можете проверить, выбрать вишневый, создать локальные ветви на основе и т. Д.

Метод git remote add работает с сетевыми протоколами, поэтому, если у вас есть доступ к машине (например, через ssh ), вы можете использовать это, даже если вы на своем компьютере (ноутбук и т. Д.).

См. Описание документации git clone относительно предостережений при использовании общих локальных файлов (с --local , --no-hardlinks --shared или --shared ).