Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git pull原始主机不更新原始主机/主机?_Git_Github_Git Pull_Git Fetch - Fatal编程技术网

git pull原始主机不更新原始主机/主机?

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 我只在本地进行了第一次提交,就像做

根据文档,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
我只在本地进行了第一次提交,就像做以下节目一样

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