我想要的是什么:
在所有分支中更新所有来自服务器的新闻提交,但不要合并任何分支(只需加入历史记录行)。
我正在尝试这个命令
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
任何成功......即使我不知道所有分支和我的分支都是更新,我想获取此更改并可以在我的日志中看到。
有任何想法吗?
答案 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
进行一次性投放。