1

当我使用 git(终端)克隆存储库,然后使用 nodegit 对远程开发分支进行检查时,它工作得很好。
但是我遇到了问题,当我想切换回远程主分支时,使用提供的示例,我无法弄清楚。

使用 SSH 克隆

git clone git@mygit.com/projects/myproject.git

Checkout to develop 可以使用以下代码,但不能用于切换回来,因为 master 分支已经在本地存在。

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 一起工作,反之亦然。
所以会很感激任何帮助。

4

0 回答 0