Проверка nodegit и переключение (удаленных) веток

Когда я клонирую репозиторий с помощью git (терминал), а затем выполняю проверку в удаленной ветке разработки с помощью nodegit, он работает нормально. Но я столкнулся с проблемой: когда я хочу вернуться к удаленной главной ветке с предоставленным пример, я не могу этого понять.

Клонирование с помощью SSH

git clone [email protected]/projects/myproject.git

Checkout для разработки работает со следующим кодом, но не работает при обратном переключении, поскольку основная ветвь уже существует локально.

git.Repository.open(appDir)
   .then((repo) => {
       return repo.getHeadCommit()
                  .then((targetCommit) => {
                      return repo.createBranch(repositoryConfig.branch, targetCommit, false);
                  })
                  .then((reference) => {
                      return repo.checkoutBranch(reference, {});
                  })
                  .then(() => {
                      return repo.getReferenceCommit('refs/remotes/origin/' + repositoryConfig.branch);
                  })
                  .then((commit) => {
                      git.Reset.reset(repo, commit, 3, {});
                  })
                  .catch((err) => {
                      reject(err);
                  });
   })
   .then(() => {
       resolve('Checking out branch ' + repositoryConfig.branch + ' done');
   })
   .catch((err) => {
       reject(err);
   });

Я попробовал это с помощью этого кода, который сбрасывает мою локальную копию в основную ветку, но не «следует» за ней, потому что после извлечения я узнаю, что я X совершаю отстающий и что я должен выполнить извлечение.

git.Repository.open(appDir)
   .then((repo) => {
       return repo.getBranch('refs/remotes/origin/' + repositoryConfig.branch)
                  .then((reference) => {
                      return repo.checkoutBranch(reference, {});
                  })
                  .then(() => {
                      return repo.getReferenceCommit('refs/remotes/origin/' + repositoryConfig.branch);
                  })
                  .then((commit) => {
                      git.Reset.reset(repo, commit, 3, {});
                  })
                  .catch((err) => {
                      reject(err);
                  });
   })
   .then(() => {
       console.info('Checking out branch ' + repositoryConfig.branch + ' done');
       resolve();
   })
   .catch((err) => {
       reject(err);
   });

В repositoryConfig.branch я установил ветвь для включения переключения.

Я не совсем разбираюсь в git и том, как он работает с прикреплением / отсоединением HEAD и наоборот. Буду признателен за любую помощь.

При переключении обратно на локальную ветвь master сначала загрузите удаленный (git fetch), вы можете сделать любое из: 1. Удалить локальный master, оформить заказ в ветку master с историей origin/master (git branch -D master; git checkout master) 2. оформить заказ в master и выполнить полный сброс в origin/master (git checkout master; git reset --hard origin/master)

Sajib Khan 05.09.2018 08:15

@SajibKhan Это то, что я делаю во втором блоке кода, как вы упомянули в 2. Ветка проверки, получение фиксации и сброс на нее. После этого моя локальная копия настроена на master, но вытягивание и переключение на разработку больше не работает, потому что я все еще слежу за разработкой.

Daniel Bonhard 05.09.2018 08:43

Убедитесь, что вы сбрасываете локальный master с последней фиксацией remote/master. "после извлечения мне сообщается, что я X совершает фиксацию ..." это сообщение должно появиться, когда local не обновляется с помощью удаленного

Sajib Khan 05.09.2018 08:47

А после git fetch пробовали?

Sajib Khan 05.09.2018 08:49

@SajibKhan Не работает с nodegit. Я добавлял repo.fetchAll раньше, но моя локальная копия по-прежнему следует разработке, а не мастеру.

Daniel Bonhard 05.09.2018 09:04
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
910
0

Другие вопросы по теме