проверка узла и переключение (удаленных) веток - PullRequest
0 голосов
/ 05 сентября 2018

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

Клонирование по SSH

git clone git@mygit.com/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.log('Checking out branch ' + repositoryConfig.branch + ' done');
       resolve();
   })
   .catch((err) => {
       reject(err);
   });

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

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

...