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

Rod*_*igo 23 git git-fetch

我想要的是:

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

我正在尝试这个命令

git fetch --force --progress --verbose  name@host:/path/to/repository.git 
Run Code Online (Sandbox Code Playgroud)

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

From host:/path/to/repository
  * branch            HEAD       -> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

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

git fetch --force --progress --verbose  name@host:/path/to/repository.git my_branch
Run Code Online (Sandbox Code Playgroud)

结果是:

From host:/path/to/repository
  * branch            my_branch       -> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

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

有什么想法吗?

Geo*_*sov 31

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

获取后,试试这个:

git log origin/yourbranchname | head
git log yourbranchname | head
Run Code Online (Sandbox Code Playgroud)

你看得到差别吗?

现在做:

git checkout origin/yourbranchname -b newbranchname
git log newbranchname
Run Code Online (Sandbox Code Playgroud)

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

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

git checkout yourbranchname
git merge origin/yourbranchname
Run Code Online (Sandbox Code Playgroud)

  • Fetch 下载 **远程** 分支,但不会更新 **本地** 分支。当您将远程分支合并到本地分支时,您就更新了本地分支。您可以在本地和远程分支上查看“历史记录”。尝试“gitk yourbranchname”和“gitk origin/yourbranchname”。 (3认同)

小智 20

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

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

git config --local --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)

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

  • OP 问题的真正原因是,正如您所说 - **当前本地分支没有远程分支!** (2认同)
  • 它解决了我的问题,但我想知道为什么我需要在新的 git 安装中设置它?我做了“git clone repo_url --depth 1”和“git fetch --unshallow” (2认同)

Joh*_*don 10

git fetch只是将更改带到远程分支的本地副本.如果你想更新你的回购或本地分支,你必须遵循fetcha merge,或者只是git pull用于一次性.

伟大的答案:https://stackoverflow.com/a/292359/102371