git fetch不会更新我的本地存储库

时间:2012-03-23 14:57:46

标签: git fetch

我想要的是什么:

在所有分支中更新所有来自服务器的新闻提交,但不要合并任何分支(只需加入历史记录行)。

我正在尝试这个命令

git fetch --force --progress --verbose  name@host:/path/to/repository.git 

我认为它会正常工作,因为它显示:

From host:/path/to/repository
  * branch            HEAD       -> FETCH_HEAD

但是,这意味着什么呢?如果我看到日志,则不会更新。如果我从服务器进行克隆,则所有新提交都在那里。所以...命令不起作用。然后我尝试使用服务器中存在但不存在于本地存储库中的分支

git fetch --force --progress --verbose  name@host:/path/to/repository.git my_branch

结果是:

From host:/path/to/repository
  * branch            my_branch       -> FETCH_HEAD

任何成功......即使我不知道所有分支和我的分支都是更新,我想获取此更改并可以在我的日志中看到。

有任何想法吗?

3 个答案:

答案 0 :(得分:27)

获取时会获得远程分支,但仍需要将远程分支中的更改合并到本地分支中以查看这些更改。

获取后,试试这个:

git log origin/yourbranchname | head
git log yourbranchname | head

你看到了区别吗?

现在做:

git checkout origin/yourbranchname -b newbranchname
git log newbranchname

您应该在newbranchname中看到远程更改。

您还可以使用

将这些更改合并到您的分支中
git checkout yourbranchname
git merge origin/yourbranchname

答案 1 :(得分:18)

之前我遇到过这个问题,主要原因是你没有在你的git本地配置中配置remote.origin.fetch。

使用以下命令来解决您的问题:

git config --local --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*

之后,运行' git fetch origin',我想你会得到预期的输出。

答案 2 :(得分:10)

git fetch只会将更改带到远程分支的本地副本。如果您想要更新您的回购或本地分支,则必须使用fetch关注merge,否则只需使用git pull进行一次性投放。

很好的回答:https://stackoverflow.com/a/292359/102371