git fetch不';不要更新我的本地存储库
我想要的是: 在所有分支中使用我的本地存储库更新来自服务器的所有新闻提交,但不要合并任何分支(只加入历史记录行)。 我正在尝试这个命令git fetch不';不要更新我的本地存储库,git,git-fetch,Git,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
我认为它会很好,因为它显示:
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
任何成功。。。即使我不知道所有分支,并且我的分支已更新,我也希望获取这些更改,并可以在日志中查看
有什么办法吗?当您获取远程分支时,您会得到远程分支,但是您仍然需要将远程分支中的更改合并到本地分支以查看这些更改 获取后,请尝试以下操作:
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
git fetch
只是将更改带到远程分支的本地副本。如果您想更新回购或本地分支机构,您必须使用合并跟随获取
,否则只需使用git pull
一次即可
很好,所以回答:我以前遇到过这个问题,主要原因是您没有在git本地配置中配置remote.origin.fetch
使用以下命令修复您的问题:
git config --local --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
之后,运行“git fetch origin”,我想您将获得预期的输出。您能解释一下加入历史记录行的方法吗?我可以说:在历史记录中进行合并。。。但不是来自两个分支机构。换句话说,我只想更新所有的历史记录,而且只有这个。你想要的是所谓的快进合并。它只适用于历史没有分歧的情况。如果是这种情况,git-pull-master
(相当于git-fetch
+git-merge-origin/master
)将在历史记录没有发散的情况下自动执行此操作。@CharlesB您是正确的。我想要的是git pull--no commit
。现在我不明白git fetch的原因。它只是从服务器下载,所以我可以在脱机模式下执行其他任务?但是,此合并意味着另一次提交,所以它可能会因为冲突而失败。我将进行提取、检查,然后进行合并。当你说:git fetch只是将更改带到远程分支的本地副本
这正是我想要做的,但它不起作用,git fetch不更新历史记录,而是“数据”,所以我可以离线设置并进行合并。fetch就是这么做的?fetch下载远程分支,但不更新本地分支。将远程分支合并到本地分支时,会更新本地分支。您可以在本地和远程分支上看到“历史记录”。试试gitk-yourbranchname
和gitk-origin/yourbranchname
,我来做。但我只看到了该分支的局部变化。我可能弄错了什么,但现在我明白了藏东西的作用。我想做的只是git pull--no commit
这就是我认为fetch应该做的:)OP问题的真正原因是,正如您所说,当前本地分支没有远程分支!这对我起了作用——帮助我度过了一个令人沮丧的早晨!它解决了我的问题,但我想知道为什么我需要在新的git安装中设置它?我做了“git clone repo_url--深度1”和“git fetch--取消允许”