首页 > 解决方案 > git pull 之后在 master 之前的本地分支

问题描述

我正在一个没有我的 git 凭据的远程服务器上工作,我想从 master 中提取。我没有本地提交,我只想更新这台机器上的本地存储库以匹配远程存储库(来源)。使用这个答案,我设法更新了存储库:

my_repo$ git pull https://my_user@github.com/my_repo
Password for 'https://my_user@github.com': 
<some updates....>

实际上,在此操作之后,本地存储库已更新为包含与远程存储库完全相同的所有提交。

但是,由于某种原因,我无法理解,本地存储库变得领先于 master,我找不到修复它的方法。这怎么可能???

my_repo$ git status
On branch master
Your branch is ahead of 'origin/master' by 3 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean
    

my_repo$ git push https://my_user@github.com/my_repo
Password for 'https://my_user@github.com': 
Everything up-to-date

my_repo$ git status
On branch master
Your branch is ahead of 'origin/master' by 3 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

my_repo$ git pull https://my_user@github.com/my_repo
Password for 'https://my_user@github.com': 
From https://github.com/my_repo
 * branch            HEAD       -> FETCH_HEAD
Already up to date.

另外,当我使用时,git log我看到了这个奇怪的结果,这对应于我的分支领先于 master,但不对应于“现实”:

my_repo$ git log --pretty=oneline
09ee1f2 (HEAD -> master) Latest commit on master
b6433fb Another commit from master
31da031 Another commit from master
85b95ae (origin/master, origin/HEAD) Another commit from master which was the head before pulled

有人对如何解决这个问题有任何建议吗?以及关于这是如何发生的以及我将来如何避免这种情况的任何想法?

谢谢!

标签: git

解决方案


您的来源/主人已过时。

从 URL 中提取是一次性的。它不会更新原点/主控。

origin 是与特定 URL 关联的远程存储库的名称。origin/master 是您最后一次在 origin 上看到 master 分支。origin/master 将仅使用 agit fetchgit pullfrom origin 进行更新。这还没有发生。

相反,您已经通过从一些不同的 URL 中提取来更新 master。它可能与原始存储库相同,但 Git 不知道这一点。您可以通过更改原始 url 来解决这个问题git remote set-url origin https://my_user@github.com/my_repo。然后git fetch origin

请参阅Pro Git 中的远程分支


推荐阅读