34

我想要的是:

在所有分支中使用我的本地存储库更新来自服务器的所有新闻提交,但不要合并任何分支(只需加入历史行)。

我正在尝试这个命令

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

任何成功......即使我不知道所有分支并且我的分支已经更新,我想获取这些更改并可以在我的日志中看到。

有什么想法让它工作吗?

4

3 回答 3

44

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

获取后,试试这个:

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

你看得到差别吗?

现在做:

git checkout origin/yourbranchname -b newbranchname
git log newbranchname

您应该在新分支名称中看到远程更改。

您还可以将这些更改合并到您的分支中

git checkout yourbranchname
git merge origin/yourbranchname
于 2012-03-23T15:00:04.203 回答
28

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

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

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

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

于 2015-01-05T07:23:55.080 回答
13

git fetch只是将更改带到远程分支的本地副本。如果您想更新您的 repo 或本地分支,您必须fetch使用 a merge,否则只使用git pull一次。

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

于 2012-03-23T15:00:27.597 回答