git pull原始主机不更新原始主机/主机?
根据文档,git-pull执行git-fetch然后执行git-merge,但是在这种情况下执行git-pull-origin-master应该执行git-fetch-origin-master对吗?然而,它似乎没有这样做。这里有一个例子 假设我的远程源主机(在我的例子中是GitHub上)具有以下历史记录:git pull原始主机不更新原始主机/主机?,git,github,git-pull,git-fetch,Git,Github,Git Pull,Git Fetch,根据文档,git-pull执行git-fetch然后执行git-merge,但是在这种情况下执行git-pull-origin-master应该执行git-fetch-origin-master对吗?然而,它似乎没有这样做。这里有一个例子 假设我的远程源主机(在我的例子中是GitHub上)具有以下历史记录: commit 1111111 : my first commit commit 2222222 : a commit from someone else 我只在本地进行了第一次提交,就像做
commit 1111111 : my first commit
commit 2222222 : a commit from someone else
我只在本地进行了第一次提交,就像做以下节目一样
git checkout master
git log --pretty=format:'%h' -n 1
1111111
git checkout origin/master
git log --pretty=format:'%h' -n 1
1111111
从这里,我进行拉拽,并查看以下结果:
git checkout master
git pull origin master
git log --pretty=format:'%h' -n 1
2222222
git checkout origin/master
git log --pretty=format:'%h' -n 1
1111111
可以看出,拉实际上使用来自远程源的新提交更新了我的主分支,但我的本地源/主分支仍然在原来的位置。强迫我做以下事情
git fetch origin master
git checkout origin/master
git log --pretty=format:'%h' -n 1
2222222
这是git pull的正确行为,还是我没有配置什么?我查看了git pull手册页,没有看到任何提示,但我可能错过了它。这有点奇怪,但是如果使用
git pull[remote]
它实际上不会更新远程引用。如果您以某种方式考虑它,这有点道理:因为您指定了要获取的特定引用,所以它不必查找有关远程分支的任何内容,因此它本质上不知道应该更新哪个远程分支。它当然可以找到答案,如果它最终得到修复,我也不会感到惊讶,但这是现有的行为。(邮件列表上可能有关于它的消息-我不知道。)
不过,你可以很容易地解决这个问题。如果使用的是git pull origin/master
,因为您指定了通过远程分支获取什么,所以它应该更新该远程分支。如果您在主分支上(或任何其他分支跟踪原点/主分支),您只需执行git pull
并让它填充默认值,它就会更新远程分支
这在git pull
手册页中有记录,最简洁的是在示例下,但也在其他地方。有关部分:
将下一个远程分支合并到当前分支:
$ git pull origin next
这会在FETCH_HEAD中暂时保留next的副本,但不会更新任何远程跟踪分支。使用远程跟踪分支,也可以通过调用fetch和merge来实现:
$ git fetch origin
$ git merge origin/next
似乎您已经分叉了存储库,分叉的分支没有用最新代码更新我也有这个问题-在分支上运行“git pull”,然后检查了日志,它没有更新。困惑的是,我实际上阅读了git pull的输出,它特别提到你需要告诉git在哪里合并,这是通过一个类似“git pull[remote][local branch]”的命令完成的,对我来说,这是“git pull origin newfeature1” 第一次命令尝试出现问题:
Z:\Abusers\jd\repo1> git pull
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 16 (delta 7), reused 15 (delta 7), pack-reused 1
Unpacking objects: 100% (16/16), done.
From github.abc.com:group1/repo1
06aefba..e5ed6ee develop -> origin/develop
af689cb..b8667a6 newfeature1-> origin/newfeature1
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> newfeature1
看看这是否有助于向你解释原因。或者,这一个可能的副本可能要考虑执行<代码> Git FETCH < /C> >后面跟着“代码> Git合并< /COD>”。你通常会少一些惊喜,对如何合并有更多的控制权。@CharlesBailey是的,我同意Matthias和我正在讨论同一个问题。很遗憾,我之前的搜索中没有提到他的问题。我想,这个问题隐藏在
git pull
manpage的某个地方。如果我记得的话,我会在以后的某个时候找到它。@KennethBaltrinic:它在示例部分,也可以从文档的其余部分推断出来。解决方法似乎对我不起作用:git pull--rebase origin/master
说origin/master不是远程回购。而git-pull--rebase-origin/master
找不到git-pull--rebase-origin/master
git-fetch-origin
完成了这项工作。非常感谢。
Z:\Abusers\jd\repo1> git pull origin newfeature1
From github.abc.com:group1/repo1
* branch newfeature1-> FETCH_HEAD
Updating af689cb..b8667a6
Fast-forward
.../file1.py | 2 +-
abc/yes1/cool1.a | Bin 0 -> 106329 bytes
.../abc.py | 7 ++++---
3 files changed, 5 insertions(+), 4 deletions(-)
create mode 100644 abc/yes1/cool1.a